将电子邮件发送到具有不同时区的用户列表?

时间:2010-06-09 21:18:47

标签: java javamail

我使用以下方法将电子邮件发送到用户列表。

  • 我希望每封电子邮件中的(收件人)仅供用户使用,而非所有用户。 也就是说,用户看来电子邮件仅发送给他/她。 我的猜测是循环播放

    message.addRecipients(Message.RecipientType.TO,address);

然后发送消息吧?但这是一个繁重的过程,多次发送电子邮件。 我该怎么办?

  • 假设我有每个用户的时区,我想在每个用户的时区发送消息。我想,同样的问题是,在他/她的时区为每个用户设置发送日期然后发送消息,对吗?

方法是:

    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)
    {
    }

1 个答案:

答案 0 :(得分:2)

向多个收件人发送电子邮件而不让每个收件人看到列表的最简单方法是使用BCC (blind carbon copy)

message.addRecipients(Message.RecipientType.BCC, address);

当每个收件人收到他们的消息时,他们只会看到自己的地址。 你仍然需要设置一个TO,但你可以使用一个固定的虚拟地址。

但是,我不确定你对发送日期的要求。电子邮件发送的时间是发送代理发送的时间(和时区),由收件人的电子邮件软件在正确的本地时区呈现。

或者你的意思是你想伪造每个收件人的发送时间?