这个问题在这里已有答案:
我正在使用java邮件API并且它在本地计算机上运行良好但是当我在服务器上部署我的web应用程序时,我得到一个例外,说javax.mail.MessagingException:无法确定本地电子邮件地址。
这是我的代码
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
try {
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]", "fromEmailPass");
}
});
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
message.setSubject("sub");
message.setText("msg");
Transport.send(message);
System.out.println("mail sent successfully");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
下面给出的是此代码抛出的异常。
javax.mail.MessagingException:无法确定本地电子邮件地址
从这个问题:Failed messages: javax.mail.MessagingException: can't determine local email address
作者似乎建议在未设置发件人地址时抛出此异常。
MimeMessage message = new MimeMessage(session);
message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
message.setFrom("[email protected]"); // <-- add 'from' email address
message.setSubject("sub");
message.setText("msg");
Transport.send(message);
消息显示“缺少本地电子邮件地址”,这意味着发件人的电子邮件地址丢失。我想你可以尝试这样做:
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost("mail.host.com")
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom("[email protected]");
helper.setTo("[email protected]");
helper.setText("testing text");