原文地址:http://blog.csdn.net/matrixjava/article/details/3237772
使用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了!
代码片段:
public void SendMail() {
List userList = this.gcmDao.findUserProvider();
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
//设定mail server
senderImpl.setHost("202.110.96.6");
senderImpl.setUsername("gcm");
senderImpl.setPassword("lsm@gcm");
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
senderImpl.setJavaMailProperties(prop);
//建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = senderImpl.createMimeMessage();
//注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,
// multipart模式
MimeMessageHelper messageHelper;
for(int i=0;i<userList.size();i++){
UserProvider user = (UserProvider)userList.get(i);
List list = this.findCpmiFileDetail(user.getUserCode());
if(!list.isEmpty()){
try {
String name = user.getUserCode()+"-"+user.getUserName()+".xls";
String dir = "c:/"+name;
messageHelper = new MimeMessageHelper(mailMessage,true,"GBK");
//设置收件人,寄件人
// mailMessage.setTo(array);
String email = user.getEmail();
if(email!=null){
messageHelper.setTo(email);
}else{
messageHelper.setTo("pc16@lotes.com.cn");
}
messageHelper.setFrom("gcm@lotes.com.cn");
messageHelper.setSubject("GCM預警事件管理通知!");
//true 表示启动HTML格式的邮件
String context = "<html><head><meta http-equiv='keywords' content='keyword1,keyword2,keyword3'>" +
"<meta http-equiv='description' content='this is my page'><meta http-equiv='content-type' content='text/html; charset=GBK'>" +
"</head><body><h1>"+user.getUserName()
+"你好:</h1><h1> 是你需要處理的SGS管控部分的清單!有"+String.valueOf(list.size())
+"需要處理。</h1><h1></h1><h1></h1><h1> 這是一封系統郵件,請不必回復!</h1><h1> 謝謝!</h1><h1>"+DateUtil.getDate()+"</h1></body></html>";
messageHelper.setText(context,true);
// FileSystemResource file = new FileSystemResource(new File(dir));
File file=new File(dir);
//这里的方法调用和插入图片是不同的。
try {
messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//发送邮件
senderImpl.send(mailMessage);
System.out.println("邮件发送成功.....");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
SPRING注解json传值,界面出现中文乱码!
spring mail spring mail
主要介绍了彻底解决Spring MVC中文乱码问题的方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
springmail架包,spring发邮件的架包
SpringMVC解决GET请求时中文乱码的问题.rar
解决办法一 解决办法二 通过模板生成文件乱码解决方法
NULL 博文链接:https://wangshiyang.iteye.com/blog/1625411
spring.mail.default-encoding=UTF-8 #电子邮件地址 spring.mail.host=smtp.126.com #Application spring.application.name=SEND-MAIL #授权密码 spring.mail.password=password #邮箱服务器默认端口 spring.mail....
spring发送 email 发送html格式数据,普通数据,附件,图片等邮件
Spring mail发送邮件实例 Spring mail发送邮件实例
spring给邮件用户发送消息,包括正文,附件,内容
spring mail 的发送 mail spring mail demo 示例
SpringMail.rar SpringMail发邮件
如何在Spring中解决中文乱码的详细方法
spring + mail + 发送邮件 demo
解决log4j乱码 在log4j.properties配置文件中可以指定字符编码: 下面这行配置指定了两个appender: log4j.rootCategory=INFO,appender1的名字,appender2的名字 下面这两行配置将上一行的两个appender的字符...
springboot打包成war,放到外部tomcat中,post请求参数中文乱码,以及tomcat控制台中文乱码问题
整合3个框架--Spring+Struts+Ibatis,实现图书的简单增删改查功能,其中还包含对中文乱码的处理问题
springMVC框架遇到中文乱码的解决思路汇总,包括从配置到注解的详细描述,帮助开发人员解决spirngMVC中文乱码问题