我有以下代码从smtp.gmail.com server向收件人发送电子邮件。当我尝试运行它时,它会发送两次电子邮件。我已将其设置为调试级别,我可以看到连接到服务器的详细信息会出现两次。你能帮我弄清楚这里出了什么问题吗?
public boolean sendEmail(EmailProperties emailProp){
String host = "smtp.gmail.com";
String from = "xyzaccount@gmail.com";
final String username = "xyzaccount@gmail.com";
final String password = "password";
String smtp_port = "587";
Properties properties = System.getProperties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", smtp_port);
properties.put("mail.debug", "true");
Session session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(emailProp.getEmailId()));
// Set Subject: header field
message.setSubject(emailProp.getSubject());
// Send the actual HTML message, as big as you like
message.setContent("<div>"+emailProp.getBody()+"</div>", "text/html" );
// Send message
Transport.send(message);
System.out.println("Sent message successfully!");
return true;
}catch (MessagingException mex) {
mex.printStackTrace();
}
return false;
}