您的位置:首页 > 编程语言 > Java开发

关于使用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都错了,最后改好后终于成功运行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: