Java 当邮件在收件人和抄送列表中时,邮件发送了重复的邮件
Java Mail sent repeated email when the email in To and Cc List
我发现当我的电子邮件地址同时在 TO
列表和 CC
列表中时,我的应用程序会向我发送两次电子邮件。
如何控制邮件只发送一次到同一个邮箱,但地址在TO
和CC
列表中?
transport.connect();
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.CC));
transport.close();
您可以在将邮件发送到 CC 之前编写一行代码来检查 TO 是否不是 CC。
或者只使用 sendMessage
一次,如下所示: Send Mail to multiple Recipients in java 我不确定它是否会删除重复数据,如果不会,则将字符串地址存储在 Set
中(在添加之前删除重复项。
代码在 java 中发送邮件
并从属性文件调用电子邮件。
Properties prop = new Properties();
InputStream input = SentmailAttachFile.class.getResourceAsStream("/Sendmail.properties");
prop.load(input);
String receiver = prop.getProperty("MAILADDRESS");
String mailCC = prop.getProperty("MAILCC");
Properties props = new Properties();
props.put("mail.smtp.host" , host);
props.put("mail.smtp.auth" , "true" );
props.put("mail.transport.protocol", "smtp");
Session ss = Session.getInstance(props,null);
MimeMessage ms = new MimeMessage(ss);
ms.addRecipient(Message.RecipientType.TO,new InternetAddress(receiver));
ms.addRecipient(Message.RecipientType.CC, new InternetAddress(mailCC));
抱歉,我通过以下方式解决了这个问题:
transport.connect();
transport.sendMessage(message, message.getAllRecipients());
transport.close();
我不知道有一个功能:message.getAllrecipients()
因为我试图使用其他人的编码。我觉得问题已经解决了。
如果您的收件人在 TO 或 CC 部分重复,应该无关紧要。邮件服务器应注意过滤而不发送重复邮件。为了实现这一点,请在您的代码中标记 2 点。
- 独一无二message-ID
- 日期Header
这些将帮助您避免重复。
mimeMessage.setSentDate(new Date()); // Date header
mimeMessage.saveChanges(); // If no unique message-ID is set, then this will set it for you
我发现当我的电子邮件地址同时在 TO
列表和 CC
列表中时,我的应用程序会向我发送两次电子邮件。
如何控制邮件只发送一次到同一个邮箱,但地址在TO
和CC
列表中?
transport.connect();
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.CC));
transport.close();
您可以在将邮件发送到 CC 之前编写一行代码来检查 TO 是否不是 CC。
或者只使用 sendMessage
一次,如下所示: Send Mail to multiple Recipients in java 我不确定它是否会删除重复数据,如果不会,则将字符串地址存储在 Set
中(在添加之前删除重复项。
代码在 java 中发送邮件 并从属性文件调用电子邮件。
Properties prop = new Properties();
InputStream input = SentmailAttachFile.class.getResourceAsStream("/Sendmail.properties");
prop.load(input);
String receiver = prop.getProperty("MAILADDRESS");
String mailCC = prop.getProperty("MAILCC");
Properties props = new Properties();
props.put("mail.smtp.host" , host);
props.put("mail.smtp.auth" , "true" );
props.put("mail.transport.protocol", "smtp");
Session ss = Session.getInstance(props,null);
MimeMessage ms = new MimeMessage(ss);
ms.addRecipient(Message.RecipientType.TO,new InternetAddress(receiver));
ms.addRecipient(Message.RecipientType.CC, new InternetAddress(mailCC));
抱歉,我通过以下方式解决了这个问题:
transport.connect();
transport.sendMessage(message, message.getAllRecipients());
transport.close();
我不知道有一个功能:message.getAllrecipients()
因为我试图使用其他人的编码。我觉得问题已经解决了。
如果您的收件人在 TO 或 CC 部分重复,应该无关紧要。邮件服务器应注意过滤而不发送重复邮件。为了实现这一点,请在您的代码中标记 2 点。
- 独一无二message-ID
- 日期Header
这些将帮助您避免重复。
mimeMessage.setSentDate(new Date()); // Date header
mimeMessage.saveChanges(); // If no unique message-ID is set, then this will set it for you