• 2024-05-29
宇哥博客 后端开发 Java发邮件出现错误501 mail from address must be same as authorization user

Java发邮件出现错误501 mail from address must be same as authorization user

com.sun.mail.smtp.SMTPSendFailedException: 501 mail from address must be same as authorization user
;
nested exception is:
com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization user

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)

Java使用mail.jar发邮件,有时候出现501 mail from address must be same as authorization user错误,但是有时候又正常。
出现这样问题的原因是同个站点有多个不同的发件箱在发送邮件,首次发送的发件箱信息记录在session中,再次使用其它发件箱发送读取的还是上一个发件箱的信息,发件箱信息不匹配。

解决方法是将Session.getDefaultInstance改为Session.getInstance

贴部分代码:

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

Properties props = new Properties();
//邮箱的发送服务器地址
props.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
//邮箱发送服务器端口,设置为465端口
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.exmail.qq.com");

Session session = Session.getInstance(props, new Authenticator() {
     protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
     }
});

其它关于邮件文章:http://www.ygbks.com/?s=mail.jar

本文来自网络,不代表本站立场,转载请注明出处。http://www.ygbks.com/3862.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部