java发送邮件遇到的问题

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

1、当使用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=28session

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

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错误,身份认证失败。报错以下:ui

                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邮箱的密码做为发送者认证密码,其实这里应该要用腾讯邮箱给的受权码。spa

             解决:个人具体操做以下:code

         登录个人QQ邮箱---设置---帐户,找到POP3/IMAP.....,我暂时是将前两项服务开启,开启时须要验证,验证成功就能够得到受权码了,而后用受权码替代QQ邮箱的密码便可解决此错误。ps:由于我这里开启了两个服务,因此获得了两个受权码,我试过了用任意一个均可以。orm

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

 

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

        一、即便不加上SSL安全链接那四句代码,也能成功发送

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

相关文章
相关标签/搜索