这是我正在使用的代码。它完美地工作到今天,但它现在不起作用。是否有任何机构有同样的问题?
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);
答案 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 - 如果解析失败"