我使用以下方法向用户列表发送电子邮件。
我希望每封电子邮件中的“收件人”仅适用于该用户,而不是所有用户。 也就是说,在用户看来,电子邮件仅发送给他/她。 我的猜测是循环
message.addRecipients(Message.RecipientType.TO, 地址);
然后发送消息,对吗?但这是一个多次发送电子邮件的繁重过程。 我能做什么?
- 假设我有每个用户的时区,并且我想向每个用户在他/她的时区中发送消息。我想,同样的问题,为每个用户在他/她的时区设置发送日期,然后发送消息,对吗?
方法是:
try
{
Properties props = System.getProperties();
props.put("mail.smtp.host", "localhost");
// Get a mail session
Session session = Session.getDefaultInstance(props, null);
// Define a new mail message
Message message = new MimeMessage(session);
InternetAddress ia = new InternetAddress();
ia.setPersonal("MySite");
ia.setAddress(from);
message.setFrom(ia);
Address[] address = new Address[recievers.size()];
for (int i = 0; i < recievers.size(); i++) {
address[i] = new InternetAddress(recievers.get(i));
}
message.addRecipients(Message.RecipientType.TO, address);
message.setSubject(subject);
// Create a message part to represent the body text
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(body, "text/html");
// use a MimeMultipart as we need to handle the file attachments
Multipart multipart = new MimeMultipart();
// add the message body to the mime message
multipart.addBodyPart(messageBodyPart);
// Put all message parts in the message
message.setContent(multipart);
message.setSentDate(getCurrentDate());
// Send the message
Transport.send(message);
}
catch (Exception ex)
{
}
最佳答案
将电子邮件发送给多个收件人而不让每个收件人都看到列表的最简单方法是使用 BCC (blind carbon copy) :
message.addRecipients(Message.RecipientType.BCC, address);
当每个收件人收到邮件时,他们只能看到自己的地址。 您仍然需要设置 TO,但您可以为此使用单个固定虚拟地址。 罢工>
不过,我不确定您对发送日期有何疑问。电子邮件的发送时间是发送代理发送的时间(和时区),并且由收件人的电子邮件软件将其呈现为正确的本地时区。
或者您的意思是您想伪造每个收件人的发送时间?
关于java - 向不同时区的用户列表发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010024/