Отправить письмо на список пользователей с разными часовыми поясами? - PullRequest
0 голосов
/ 10 июня 2010

Я использую следующий метод для отправки электронной почты списку пользователей.

  • Я хочу, чтобы (Кому) в каждом письме предназначалось только для пользователя, а не для всех пользователей.То есть пользователям представляется, что электронное письмо отправлено только ему / ей.Я предполагаю, что нужно зациклить

    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 Ответ

2 голосов
/ 10 июня 2010

Самый простой способ отправить электронное письмо нескольким получателям без просмотра списка каждого из них - использовать BCC (скрытая копия) :

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

Когда каждый получатель получает своисообщение, они видят только свой адрес. Вам все еще нужно установить TO, но вы можете использовать для этого один фиксированный фиктивный адрес.

Я не уверен, что вы спрашиваете о дате отправки.Время отправки по электронной почте - это время (и часовой пояс), которое было отправлено отправляющим агентом, и это зависит от программного обеспечения электронной почты получателя, чтобы отобразить его в правильном местном часовом поясе.подделать отправленное время для каждого получателя?

...