javax电子邮件通过smtp.gmail.com发送两次

时间:2016-06-06 15:35:20

标签: smtp javamail

我有以下代码从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;
}

0 个答案:

没有答案