JavaMail发送邮件问题

1.javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed的异常:

解决方案:

在执行邮件发送前,添加下面这一行代码,亲测有效

 设置当前线程的上下文类加载器为 javax.mail.Message 类的类加载器。 在某些情况下,特别是在使用 JavaMail API 或其他扩展类库时,设置上下文类加载器可能是必要的,以确保正确加载所需的类和资源。

Thread.currentThread().setContextClassLoader(javax.mail.Message.class.getClassLoader());

2. Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.dm.aliyun.com, port: 465;的异常:

解决方案:

修改邮件发送时SSL的protocol就可以了

 MailSSLSocketFactory sf = new MailSSLSocketFactory();
 //设置信任所有的主机
 sf.setTrustAllHosts(true);
 //连接邮件服务器的参数配置
 Properties props = new Properties();
 //开启tls
 props.setProperty("mail.smtp.auth", "true");
 props.setProperty("mail.smtp.ssl.enable", "true");
 props.put("mail.smtp.ssl.socketFactory", sf);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置JavaMail发送邮件,你需要按照以下步骤进行操作: 1. 导入相关的类库:首先,确保你的项目中已经导入了JavaMail和Java Activation Framework(JAF)的相关类库。你可以从官方网站(https://javaee.github.io/javamail/)下载并添加这些类库到你的项目中。 2. 配置SMTP服务器信息:你需要指定SMTP服务器的地址和端口号。通常,SMTP服务器的地址是根据你使用的邮件服务提供商而不同。例如,对于Gmail来说,SMTP服务器地址是"smtp.gmail.com",端口号是587。 3. 创建Session对象:使用javax.mail.Session类创建一个Session对象。你可以通过使用Properties对象来设置Session的一些属性,例如SMTP服务器信息、是否需要身份验证等。 ```java Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]", "your-password"); } }); ``` 在这里,你需要替换`[email protected]`和`your-password`为你自己的邮箱地址和密码。 4. 创建Message对象:使用javax.mail.Message类创建一个Message对象,并设置邮件发送者、接收者、主题和正文等信息。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Hello, World!"); message.setText("This is the content of the email."); ``` 在这里,你需要将`[email protected]`替换为你自己的邮箱地址,将`[email protected]`替换为邮件接收者的邮箱地址。 5. 发送邮件:使用Transport类的静态方法send()发送邮件。 ```java Transport.send(message); ``` 完整的示例代码如下: ```java import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; public class EmailSender { public static void main(String[] args) { Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]", "your-password"); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("[email protected]")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); message.setSubject("Hello, World!"); message.setText("This is the content of the email.");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值