javamail发送邮件中的问题

今天在写一个商城项目中,需要注册时给用户发送一封邮件,让用户去激活。在这过程中遇到了几个问题,在这里写出来,一是让我自己加深印象,第二希望能帮助到同样遇到这些问题的朋友。

    不多说先上代码:

	/**
	 * 发送邮件的方法
	 * @param to	收件人邮箱
	 * @param code	发送的激活码
	 */
	public static void sendMail(String to,String code)
	{
		Properties props = new Properties();
		props.setProperty("mail.transport.protocol", "smtp");
		props.setProperty("mail.host", "smtp.qq.com");
		props.setProperty("mail.smtp.auth", "true");
		Session session = Session.getDefaultInstance(props);
		Message msg = new MimeMessage(session);
		try {
			msg.setFrom(new InternetAddress("2xxxxx@qq.com"));
			msg.addRecipient(RecipientType.TO, new InternetAddress(to));
			msg.setSubject("商城激活邮件");
			msg.setContent("<h1>点击链接激活<a href='http://192.168.43.xx:8080/myShop/user_active.action?code="+code+"'>"+code+"</a></h1>", "text/html;charset=UTF-8");
			
			Transport transport = session.getTransport();
			transport.connect("smtp.qq.com", "账号", "****");
			transport.sendMessage(msg, msg.getAllRecipients());
			transport.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		sendMail("2xxxxx@qq.com", "1111");
	}

出现的错误一:报错

javax.mail.AuthenticationFailedException: 535 Error: ?????????¨?????????ê?é????: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

	at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:809)
	at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:752)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669)
	at javax.mail.Service.connect(Service.java:295)
	at javax.mail.Service.connect(Service.java:176)
	at utils.MailUtils.sendMail(MailUtils.java:37)
	at utils.MailUtils.main(MailUtils.java:46)

这个是身份验证失败,相信有很多朋友跟我一样是使用qq邮箱,所以在连接时使用的账号和密码填写的是qq账号和密码,这样不对,密码需要的是16位的授权码,需要qq邮箱授权,这个授权码获取方式:获取方式,在transport.connect("smtp.qq.com", "账号", "****");第三个参数输入获取的16位授权码即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值