使用Spring 的封装的MailSender,确实省事多了!
但在使用中,还是得注意些问题
1.增加验证,否则会报:553 authentication is required 的错误信息
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
JavaMailSenderImpl.setJavaMailProperties(prop);
2.当邮件内容是HTML语言时的中文问题:
初始化MimeMessageHelper辅助类时,设置"GBK" encoding!
如:
MimeMessageHelper messageHelp = new MimeMessageHelper(message,true,"GBK");
同时在设置:<META http-equiv=Content-Type content='text/html; charset=GBK'>
如果都设置为"UTF-8",在某些邮件客户端标题是冷僻字时,不能正常显示!
3.邮件附件的中文问题!
spring的文档里面说MimeMessageHelper设置了encoding,同时对title,text,attach产生作用,但还是会出问题:
解决方法:MimeUtility.encodeWord(file.getName());就OK了!
以下是可以运行的代码
SendMailDemo.java
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
public class SendMailDemo {
public void send163ByMutil() throws MessagingException {
JavaMailSenderImpl javaMail = new JavaMailSenderImpl();
javaMail.setHost("smtp.163.com");
javaMail.setPassword("passowrd");
javaMail.setUsername("username");
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
javaMail.setJavaMailProperties(prop);
MimeMessage message = javaMail.createMimeMessage();
MimeMessageHelper messageHelp = new MimeMessageHelper(message,true,"GBK");
messageHelp.setFrom("likun35@163.com");
messageHelp.setTo("likun35@163.com");
messageHelp.setSubject("邮件测试");
// messageHelp
String body = "<html><head><META http-equiv=Content-Type content='text/html; charset=GBK'></HEAD><title>test</title></head><body>dear 小燕子 \n ";
body+="<red>This is Text!</red> pic <img src='cid:a'></img><br>hello<img src='cid:b'></img></body></html>";
messageHelp.setText(body, true);
messageHelp.addInline("a", new File("E:/xiezi.jpg"));
messageHelp.addInline("b", new File("E:/logo.png"));
File file=new File("E:/Favorites中文文件.rar");
try {
messageHelp.addAttachment(MimeUtility.encodeWord(file.getName()), file);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
javaMail.send(message);
}
public static void main(String[] args) throws MessagingException {
SendMail send=new SendMail();
send.send163ByMutil();
}
}
分享到:
相关推荐
在应用服务器中使用Hibernate的注意点 12.3. JDO 12.3.1. 建立PersistenceManagerFactory 12.3.2. JdoTemplate和JdoDaoSupport 12.3.3. 基于原生的JDO API实现DAO 12.3.4. 事务管理 12.3.5. JdoDialect 12.4. ...
在应用服务器中使用Hibernate的注意点 12.3. JDO 12.3.1. 建立PersistenceManagerFactory 12.3.2. JdoTemplate和JdoDaoSupport 12.3.3. 基于原生的JDO API实现DAO 12.3.4. 事务管理 12.3.5. JdoDialect 12.4...
在应用服务器中使用Hibernate的注意点 12.3. JDO 12.3.1. 建立PersistenceManagerFactory 12.3.2. JdoTemplate和JdoDaoSupport 12.3.3. 基于原生的JDO API实现DAO 12.3.4. 事务管理 12.3.5. JdoDialect 12.4...
SpringBoot mail中文附件乱码的解决方法 ...在使用 SpringBoot 发送邮件时,需要注意附件名称中文乱码的问题。通过初始化 splitLongParameters 为 false,我们可以解决这个问题,并确保附件名称正确地传输。
对于非ASCII字符,如中文字符,需要进行正确的编码,通常使用`UTF-8`。 7. **安全性和认证**:现代邮件系统经常使用SSL/TLS加密连接,以确保数据安全。JavaMail API支持这些安全协议,可以通过配置`Properties`启用...