- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
4天前关闭。
截至12小时前,社区正在审查是否重新讨论这个问题。
Improve this question
在这里,我发现了一个疯狂的要求:不发送邮件给抄送收件人。收件人必须知道谁在抄送列表中,但抄送的收件人不应收到邮件。
我正在按照这个解决方案向每个人发送一封摘要通知邮件。抄送列表中的收件人可能是另一封通知邮件的收件人,以避免我按照这个解决方案发送垃圾邮件。
此处正在使用JavaMail。
JavaMailSender sender = javaMailSender();
MimeMessagePreparator messagePreparator = mimeMessage -> {
MimeMessageHelper mailMessage = new MimeMessageHelper(mimeMessage);
mailMessage.setTo(recipients);
if(ccRecipients.length > 0){
mailMessage.setCc(ccRecipients);
}
if(bccRecipients.length > 0){
mailMessage.setBcc(bccRecipients);
}
mailMessage.setReplyTo(from);
mailMessage.setFrom(from);
mailMessage.setText(body, isHtml);
mailMessage.setSubject(subject);
};
sender.send(messagePreparator);
2条答案
按热度按时间knpiaxh11#
使用getRecipients查找收件人类型,然后忽略CC。
njthzxwz2#
答:Java邮件(javax或jakarta)不支持它。API隐藏了邮件头的格式。你告诉API谁是
To:
,CC:
和BCC:
收件人,并负责创建和处理电子邮件信封。问:理论上可行吗?
A:也许吧......
如果我们看看管理互联网电子邮件的标准,我们会发现有一个标准(RFC 821)处理SMTP电子邮件传输,第二个标准(RFC 822)处理电子邮件的结构。在传输层,发件人发出一个带有单个发件人地址的“MAIL FROM”命令,并为每个收件人发出一个“RCPT TO”命令。
就RFC 821而言,电子邮件的标题是不透明的,因此,理论上,您可以使用SMTP将电子邮件发送到一组收件人,这些收件人与电子邮件的
From:
,Sender:
,To:
,CC:
,BCC:
等所暗示的收件人不同。然而,一旦电子邮件到达邮件服务器,你就得听从服务器的摆布,把邮件送到用户的邮箱。它可以只根据
RCPT
命令来发送邮件,也可以解析电子邮件的标题来决定把邮件发送给谁。我怀疑后者 * 不符合规范 *,但这并不意味着它不会发生。如果它符合规范,远程电子邮件服务器将尊重您的意愿的可能性为零。无论如何...这是由发送电子邮件的客户端来计算哪些地址包括为
RCPT
。您 * 可以 * 编写自己的客户端代码,将满足您的(broken 2)要求,但AFAIK的标准Java / Jakarta邮件提供商不会这样做。1 -在您的情况下,如果您打算向抄送方发送不同的电子邮件,这可能会导致抄送方获得两个版本的电子邮件副本。
2 -正如我上面评论的,
To:
收件人会阅读CC:
列表,并假设电子邮件已经发送给他们。如果你实际上没有发送CC,他们有权投诉。