使用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("username"); senderImpl.setPassword("password"); 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(xxx@xxx); } messageHelper.setFrom("xxx@xxx"); 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(); } } } }
相关推荐
SpringBoot mail中文附件乱码的解决方法 邮件附件中文乱码问题 在使用 SpringBoot 发送邮件时,经常会遇到附件名称中文乱码的问题。本文将详细介绍解决此问题的方法。 问题分析 在发送邮件时,我们需要将附件...
本示例将深入探讨如何使用Spring发送电子邮件,特别是针对中文乱码问题的解决方案。我们将涉及Spring的Java配置和Velocity模板引擎来创建动态邮件内容。 首先,我们需要引入必要的依赖。在Spring项目中,我们通常会...
spring.mail.properties.mail.smtp.starttls.enable=true ``` 然后创建一个邮件服务类,用于处理邮件发送。在这个类中,我们将使用Freemarker模板生成HTML内容,并通过JavaMailSender发送邮件: ```java @Service ...
本项目使用到的mail服务可在mail.properties中配置,不配置的话不影响整体,只是使用不了邮件服务。 本项目原本使用的是阿里云oss服务,现已修改成图片上传到本地服务器,如果需要可以在db.properties中进行阿里云...
1. **中文乱码处理**:在Java开发中,中文乱码问题经常出现,特别是在文件读写、网络传输或者数据库操作时。为了解决这个问题,我们需要确保在整个程序中统一字符编码,通常设置为UTF-8。在SSH框架中,可以在web.xml...
最后,字符乱码问题在处理多国语言和编码格式时尤为突出。解决这个问题需要理解字符编码(如UTF-8、GBK等)和HTTP头中的Content-Type字段,以及在Servlet和JSP中正确设置请求和响应的编码。 总结,Java Web应用的...
对于非ASCII字符,正确设置字符集非常重要,以防止乱码问题。 在实际开发中,获取文件的MIME类型通常涉及到对文件扩展名的检查,或者通过读取文件头信息来判断。Java中,可以使用`Files.probeContentType(path)`...
- **编码设置**:确保项目编码格式为UTF-8,避免字符乱码问题。 ##### 3. 配置MySQL - **创建数据库**:在MySQL中创建名为`email`的数据库,用于存储邮件服务器的相关数据。 - **连接配置**:根据具体使用的框架...