电子邮件收到两次,但我只想要一次

时间:2014-04-01 09:39:43

标签: java jsp servlets

这是我的代码。任何人都可以告诉我为什么它会向单身人士发送两次电子邮件 我只需要发一封邮件。我会改变以获得正确的结果吗?

public void dbbackup_notify(String email, String data, String subject) {
    String toEmails = email;
    Session session = Session.getInstance(props, newjavax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, pass);
        }
    });
    Message message = new MimeMessage(session);
    try {
        message.setFrom(new InternetAddress(userid));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails));
        message.setSubject(subject);
        message.setText(data);
        message.setContent(data, "text/html");

        transport = session.getTransport("smtp");
        transport.connect(host, user, pass);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        System.out.println("Sent Successfully: " + new Date());
    } catch (AddressException e) {
        e.printStackTrace();
    } catch (MessagingException e) {
        e.printStackTrace();
        System.out.println("Don't Send Successfully" + new Date());
    }
}

1 个答案:

答案 0 :(得分:1)

显而易见的答案是因为你要两次打电话。你怎么知道你不是?

当您从程序中收到两条消息时,它们是否都具有相同的消息ID?

如果你调用session.setDebug(true),你会看到消息被发送两次吗?

BTW,请注意setContent只是覆盖了setText的作用;你不需要两者兼而有之。声明消息为MimeMessage类型,然后用message.setText替换两个set调用(数据," utf-8"," html");

另请注意您don't need the Authenticator,因为您在连接通话中传递了用户名和密码。