Javamail体验

这次台湾项目的注册与忘记密码需要发送邮件的需求,尽管任务很简单但是也遇到了些问题。把经验之谈记录下来,以免后面忘记。

        java的基本代码和步骤我就不说了,网上一搜一大把,主要说说几个注意事项吧。

       使用JavaMail发送邮件需要用到mail.jar和activtion.jar两个包

        1 - 我用的是myeclipse开发项目,框架需要的jar包是自己手动放上去的,这样容易让tomcat自带的jar包与自己定义的jar混淆。比如在这次邮件需要的jar包里面就遇到这样的问题。情况是这样的:我写代码的时候,在发送邮件使用465做端口时需要SSL加密,不然验证通不过 报错:org.springframework.mail.MailAuthenticationException: Authentication failed,  SSL加密:  Properties pt = new Properties();  MailSSLSocketFactory sf = new MailSSLSocketFactory();    sf.setTrustAllHosts(true); pt.put("mail.smtp.ssl.enable", "true"); pt.put("mail.smtp.ssl.socketFactory", sf);(此验证只有使用465/587端口需要)。然后就说到jar包加载问题,这个困扰了好久,我用main方法执行没问题可以发送,但是在项目的框架里就发送不了,还报错,说 MailSSLSocketFactory 类加载异常,最后找到原因是,我手动下载的mail.jar包没有这个类,但是tomcat自带的mail.jar又带有这个类,所以最后的情况是,MailSSLSocketFactory这个类可以编译并导入(Import),但是在项目跑起来执行的时候,又说找不到这个类了。是因为执行的时候使用是lib下载的mail.jar所以找不到这个类。

       2 -  网易邮箱可以正常发送,QQ就不能发送的问题,这个网上倒是有很多解释,有些不对,有些是对了,反正我是都求证了。最后的结果是:QQ发送邮箱的需要开启 pop和smtp服务都开通了,且生成的授权码作为服务器发送的密码。其他的正常操作就行,提供个代码地址吧。http://bbs.csdn.net/topics/391990077。

推荐几个靠谱的地址:

        http://blog.csdn.net/afei3418/article/details/50544398

        http://www.cnblogs.com/snail-lb/p/5509182.html

总结:这个问题也是走了很多弯路的,也找过朋友问。总的感觉起来还是缺乏正确、连贯的分析思路,朋友给的建议是从根本出发,看报错是绝对不会有错的,别东想西想,围绕报错展开就可以了。还有就是容易陷入思维荒区,也有遇到疑难杂症时,就一时不知道从何下手。

        切记!切记!


补充: 

 1、在发送163邮箱的过程中容易被网易拉入黑名单。如:caidimin@163.com就没逃出这个厄运。主要是因为关键性的文字或者链接

 2、在公司做QQ/Foxmail邮箱测试的时候,后来用465做端口就发不出去,587却可以,我是有做过SSL验证的.

 还是记录下核心代码吧! QQ 为例:

        Map<String,Object> map = new HashMap<String,Object>();
        //发送邮箱
       JavaMailSenderImpl ms = new  JavaMailSenderImpl();
       ms.setHost("smtp.qq.com");
       ms.setPort(587); // PS:在公司测试时,465就是不行,发送不出去
       ms.setUsername("724401286@qq.com");
       ms.setPassword("cdmgmhglndpxlwqbcjg");
       Properties pt = new Properties();
       pt.setProperty("mail.smtp.auth", "true");  
       MailSSLSocketFactory sf = new MailSSLSocketFactory();
       sf.setTrustAllHosts(true);
       pt.put("mail.smtp.ssl.enable", "true");
       pt.put("mail.smtp.ssl.socketFactory", sf);
       ms.setJavaMailProperties(pt);
       MimeMessage msg = ms.createMimeMessage();
       try{
            //创建MimeMessageHelper对象,处理MimeMessage的辅助类
            MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
            helper.setFrom("724401286@qq.com");//发件地址
            helper.setTo("2633715881@qq.com");//收件地址
            helper.setSubject("发送验证码");//标题
            helper.setText("恭喜您,邮箱的用戶,您的验证码是:kcndh4",false);//内容
            ms.send(msg);//发送邮件
        }catch(Exception e){
           e.printStackTrace();
        }

       其他配置:

         Foxmail 配置 : smtp.exmail.qq.com / 587 / martin_cai@sdmctech.com / Ai****** / martin_cai@sdmctech.com / 

        163配置:  smtp.163.com / 25 / caidiyminy@163.com / ai****** / caidiyminy@163.com


        


参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

伄跳墻

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值