java发送邮件遇到的问题

今天尝试用java.mail.jar来实现Java程序发送邮件的功能,遇到一些问题:

一、当使用QQ邮箱向网易邮箱发邮件时:

    问题1:530错误,需要建立安全连接,报错如下:

                 javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28

                解决:我在原来的初始化代码中加上SSL相关代码即可解决此错误,如下前四句代码:

private void init(String name, String pass, String smtpHostName) throws GeneralSecurityException{
		//开启ssl加密,如果没有ssl加密,会报530错误
		MailSSLSocketFactory sf = new MailSSLSocketFactory();
		sf.setTrustAllHosts(true);
		prop.put("mail.smtp.ssl.enable", "true");
		prop.put("mail.smtp.ssl.socketFactory", sf);
		
		
		prop.setProperty("mail.smtp.auth", "true");
		prop.setProperty("mail.smtp.host", smtpHostName);
		authticator = new MailAuthticator(name, pass);
		session = Session.getInstance(prop, authticator);
	}

     问题2:535错误,身份认证失败。报错如下:

                javax.mail.AuthenticationFailedException: 535 Error:  Authentication failed: More information at http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

         原因:我用QQ邮箱的密码作为发送者认证密码,其实这里应该要用腾讯邮箱给的授权码。

             解决:我的具体操作如下:

         登陆我的QQ邮箱---设置---账户,找到POP3/IMAP.....,我暂时是将前两项服务开启,开启时需要验证,验证成功就可以获得授权码了,然后用授权码替代QQ邮箱的密码即可解决此错误。ps:因为我这里开启了两个服务,所以得到了两个授权码,我试过了用任意一个都可以。

104621_xZXr_2708044.png

          ps:我在遇到这个问题2后,看到网上有在人说要把服务器改成:smtp.exmail.qq.com,我的之前是smtp.qq.com。所以我就改成了smtp.exmail.qq.com,但问题并没有解决。我最后是在smtp.qq.com的配置下,进行上面的步骤才成功的。成功之后我又改成smtp.exmail.qq.com试了一下,发现还是报535错误。所以最后我的是smtp.qq.com

 

二、用网易邮箱向QQ邮箱发送邮件时:

        1、即使不加上SSL安全连接那四句代码,也能成功发送

        2、也需要用授权码代替发送者的密码,授权码的获取过程与QQ邮箱的类似:登陆网易邮箱--设置--POP3/SMTP/IMAP--开启相关服务--验证--获取认证码。注意网易的认证码是自己设置的,而QQ邮箱的则是它自己生成的。

 

转载于:https://my.oschina.net/henryking/blog/758838

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值