Java GMAIL SMTP MAILSEND ERROR- 553 5.1.2指定的地址不是有效的RFC-5321地址

时间:2015-11-05 10:22:43

标签: java javamail

这是我正在使用的代码。它完美地工作到今天,但它现在不起作用。是否有任何机构有同样的问题?

   Properties properties = new Properties();
    properties.put("mail.smtp.host", "smtp.gmail.com");
    properties.put("mail.smtp.port", "587");
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.user", "username@gmail.com");
    properties.put("mail.password", "passwordtext");
        Authenticator auth = new Authenticator() {
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("username@gmail.com", "passwordtext");
        }
    };
    Session session = Session.getInstance(properties, auth);
        Message msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress("username@gmail.com"));
    msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse("toaddress@gmail.com"));
    msg.setSubject("hiiiii");
    msg.setSentDate(new Date());

    MimeBodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setContent("ggggg", "text/html");

    msg.setContent(multipart);

   Transport.send(msg);

1 个答案:

答案 0 :(得分:0)

  

在我的代码中,我使用的是:

   msg.setFrom(new InternetAddress("username"));
     

将此更改为

   msg.setFrom(new InternetAddress("username@gmail.com")); 
     

这很好......但是

   msg.setFrom(new InternetAddress("username")); 
     

一直工作到昨天。

这是一个难题,为什么它(显然)直到昨天才使用无效的电子邮件地址。但是,解决方案很明显。始终使用完整的RFC-5321兼容电子邮件地址...如错误消息所示。

请注意,constructor's javadoc说明了这一点:

  

"解析给定的字符串并创建InternetAddress。有关解析的详细信息,请参阅解析方法。使用" strict"解析地址。解析。当strict为true时,此构造函数不执行InternetAddress(String address,boolean strict)构造函数执行的其他语法检查。此构造函数等效于InternetAddress(address,false)。

     

参数:address - RFC822格式的地址

     

抛出:AddressException - 如果解析失败"