现在,我面临着一个非常奇怪的问题,那就是在发送邮件期间
这很奇怪,因为当我在localhost上测试我的应用程序时,一切都很好,但是当我部署应用程序时,它可以发送邮件。
你们也可以检查一下
http://www.mkjit-solutions.com/app/jsf/Contactus.xhtml
我看到此异常:
javax.mail.SendFailedException: Sending failed; nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. yv6sm13782372pac.29 - gsmtp
我使用的代码是
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props,
new javax.mail.Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(userAddress, userPassword);
}
});
customMsg += "3 - ";
try {
customMsg += "3.1 - ";
Message message = new MimeMessage(session);
customMsg += "3.2 - ";
message.setFrom(new InternetAddress(userAddress));
customMsg += "3.3 - ";
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toAddress));
customMsg += "3.4 - ";
message.setSubject(subject);
customMsg += "3.5 - ";
message.setText(msg);
customMsg += "3.6 - ";
Transport transport = session.getTransport("smtp");
Transport.send(message);
customMsg += "4 - ";
System.out.println("ua"+userAddress);
System.out.println(""+userPassword);
System.out.println("ta"+toAddress);
System.out.println("Done");
flag = true;
customMsg += " [Value of Flag "+flag+"] ";
}
catch (Exception ex)
{
System.out.println("");
ex.printStackTrace();
flag = false;
customMsg += " [Value of Flag "+flag+"] ";
this.e = ex;
//throw new RuntimeException(e);
}
return flag;
最佳答案
首先修复这些common mistakes。
Gmail示例代码在JavaMail FAQ中。
如果仍然无法正常工作,请遵循以下debugging tips并发布结果。