关于使用spring框架来实现email发送其中遇到的问题已解决
2018-03-25 18:57
585 查看
我用的是网易邮箱, spring 封装了一个简单易用的关于邮件发送的工具类JavaMailSenderImpl ,所以可以用JavaMailSenderImpl 来实现邮件发送。当然还需引入java的email包,我用的是javax.mail-1.5.2.jar(当然你也可以用java直接发送邮件)
这是代码
public class send{
private static final String HOST = "smtp.163.com";
private static final String USERNAME = "账号@163.com";
private static final String PASSWORD = "授权码";
private static final String EMAILFORM = "账号@163.com";
private static final int PORT = 25;
private JavaMailSenderImpl mailSender = createMailSender();
/**
* 邮件发送器
*
* @return 配置好的工具
*/
public JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", "25000");
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
return sender;
}
/**
* 发送邮件
*
* @param to 接受人
* @param subject 主题
* @param html 发送内容
* @throws MessagingException 异常
* @throws UnsupportedEncodingException 异常
*/
@RequestMapping(value="/find")
public void sendHtmlMail(String email, String subject, String html) throws MessagingException,UnsupportedEncodingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(EMAILFORM, "系统名称");
subject ="找回密码";
html="你的密码是";
messageHelper.setTo(email);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
}
}
执行后总是遇到Mail from must equal authorized user 这个问题我困扰了很久,明明我填的账户授权码都对,就是这个问题,我还去断点调试发现变量里面的值都正确就是不知道怎么回事? 后来我才想到账户是不是有问题,结果才发现原来我的网易邮箱不是手机号@163.com而是前面还有个字母m,所以上面的USERNAME和EMAILFORM都错了,最后改好后终于成功运行了
这是代码
public class send{
private static final String HOST = "smtp.163.com";
private static final String USERNAME = "账号@163.com";
private static final String PASSWORD = "授权码";
private static final String EMAILFORM = "账号@163.com";
private static final int PORT = 25;
private JavaMailSenderImpl mailSender = createMailSender();
/**
* 邮件发送器
*
* @return 配置好的工具
*/
public JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", "25000");
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
return sender;
}
/**
* 发送邮件
*
* @param to 接受人
* @param subject 主题
* @param html 发送内容
* @throws MessagingException 异常
* @throws UnsupportedEncodingException 异常
*/
@RequestMapping(value="/find")
public void sendHtmlMail(String email, String subject, String html) throws MessagingException,UnsupportedEncodingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(EMAILFORM, "系统名称");
subject ="找回密码";
html="你的密码是";
messageHelper.setTo(email);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
}
}
执行后总是遇到Mail from must equal authorized user 这个问题我困扰了很久,明明我填的账户授权码都对,就是这个问题,我还去断点调试发现变量里面的值都正确就是不知道怎么回事? 后来我才想到账户是不是有问题,结果才发现原来我的网易邮箱不是手机号@163.com而是前面还有个字母m,所以上面的USERNAME和EMAILFORM都错了,最后改好后终于成功运行了
相关文章推荐
- 关于使用commons-email包测试发送邮件遇到的问题
- 关于使用commons-email包测试发送邮件遇到的问题
- 关于TP5使用GuzzleHttp发送请求遇到的问题解决
- 关于使用xib的自定义UITableViewCell中修改其中view的问题及解决
- 使用struts2实现下载功能遇到的文件中文问题解决经验分享
- 使用Python脚本实现批量网站存活检测遇到问题及解决方法
- 关于ArrayList使用时常遇到的问题以及解决方法
- 在tp3.2.3中使用 FormData 对象实现表单的文件上传功能遇到的一个问题及解决方法
- 关于使用spring框架的时候抽象类中注入其他实现类失败的解决方法
- 关于Emgu安装和使用中遇到的问题和解决办法
- 解决:关于 SHFILEOPSTRUCT 的使用遇到的问题
- 使用Bot Framework遇到WebChat无法发送消息的问题解决
- 关于在使用Exchange2003系统时无法向sina,yahoo,hotmail等邮箱发送邮件问题的解决方法
- 关于Javaemail发送邮件时遇到的问题
- 使用Python脚本实现批量网站存活检测遇到问题及解决方法
- Spring发送电子邮件使用Gmail遇到的问题及解决
- 关于上位机与arm使用自定义协议通过串口传输文件时遇到的疑难问题的解决
- 关于Delphi2010使用Indy发送邮件乱码问题的解决
- 关于VS 使用GDB工具调试ADT下JNI时遇到的一些问题的解决
- 使用apache的TelnetClient实现java向telnet服务器发送命令并显示数据(解决乱码问题)