关于Javaemail发送邮件时遇到的问题

来源:互联网 发布:西安传智java培训 编辑:程序博客网 时间:2024/05/16 12:19

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,运行代码,问题解决了!