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

Java 向具有不同时区的用户列表发送电子邮件?,java,jakarta-mail,Java,Jakarta Mail,我使用以下方法向用户列表发送电子邮件 我希望每封电子邮件中的(To)只针对用户,而不是所有用户。 也就是说,在用户看来,电子邮件只发送给他/她。 我的猜测是继续下去 message.addRecipients(message.RecipientType.TO,地址) 然后发送消息,对吗?但这是一个繁重的过程,需要多次发送电子邮件。 我能做什么 假设我有每个用户的时区,并且我想在每个用户的时区中发送消息。我猜,同样的问题是,为每个用户在其时区内设置发送日期,然后发送消息,对吗 方法是:

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

  • 我希望每封电子邮件中的(To)只针对用户,而不是所有用户。 也就是说,在用户看来,电子邮件只发送给他/她。 我的猜测是继续下去

    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)
    {
    }
试试看
{
Properties props=System.getProperties();
put(“mail.smtp.host”、“localhost”);
//获取邮件会话
Session Session=Session.getDefaultInstance(props,null);
//定义新邮件消息
Message Message=新的mimessage(会话);
InternetAddress ia=新的InternetAddress();
ia.setPersonal(“MySite”);
ia.设置地址(从);
message.setFrom(ia);
地址[]地址=新地址[Receivers.size()];
对于(int i=0;i
向多个收件人发送电子邮件而不让他们看到列表的最简单方法是使用:

当每个收件人收到他们的邮件时,他们只能看到自己的地址。您仍然需要将设置为,但可以使用一个固定的虚拟地址

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


或者,您的意思是要伪造每个收件人的发送时间?

SMTP规范中没有要求在邮件标题中设置“收件人:”字段。我希望为每个用户设置一个“收件人”,并在客户端时间而不是服务器邮件时间发送电子邮件,因为这会导致错误的接收时间。@ylazez:“错误的接收时间”是什么意思?请给出一个具体的例子。你可以将自己的电子邮件地址放在“收件人”字段中。有些电子邮件应用程序,如Lotus Notes,需要在“收件人:”字段中输入电子邮件地址。
message.addRecipients(Message.RecipientType.BCC, address);