1.导包
首先在网上找到了需要用到的jar包,两个就好。分别是:javax.mail和javax.activation,于是我在POM.xml文件中就导入了依赖。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
2.测试代码
包倒好了,代码也编辑完成了,下面就开始测试代码。果然,代码报出了异常
1.java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
解决方案:MailLogger 是JavaMail的一部分,包含在Java EE环境里面,但是不包含在Java SE环境里面,出现这个错误很大的原因是在SE环境里面测试邮件的发送;javax.mail-api只适合编译,但是如果你实在要运行代码,必须完全实现JavaMail,可以用<groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId>
将上面javax.mail的包依赖切换为
<dependency >
<groupId >com.sun.mail </groupId >
<artifactId >javax.mail </artifactId >
<version >1.5.4 </version >
</dependency >
就好了
2.之后运行没问题了,可以注册用户,但是报出了另外一个异常
javax.mail.AuthenticationFailedException: 550 User has no permission
解决方案:这是网易邮箱设置的原因,登录发送邮件的网易邮箱(我是用网易邮箱发送邮件的),点击设置,选择客户端授权码,然后开启客户端授权码,OK
3.随后运行,仍然会报出一个异常
javax.mail.AuthenticationFailedException: 535 Error: authentication failed
解决方案:该异常的原因是因为认证不通过导致的,原因是因为刚刚开启了客户端授权码,而在代码中原来设置的网易邮箱的密码还是登陆密码,此时要把登陆密码改成客户端授权码就好了。
OK,运行代码,问题解决了!