отправлять почту через Java: несколько отправителей с другим почтовым идентификатором

1

Я хочу отправить одно письмо указанному получателю, но у моего отправителя может быть другая почтовая учетная запись, например, Outlook или ymail или gmail. Возможно ли отправить электронное письмо с другого идентификатора электронной почты одному получателю? Я использую этот код:

try
    {final  String from=request.getParameter("from");String smtpServ="",port="";final String pass=request.getParameter("pass");String to=request.getParameter("to");String subject=request.getParameter("subject");String body=request.getParameter("msg");if(from.contains("@gmail.com")){smtpServ="smtp.gmail.com";port="465";}else if(from.contains("@outlook.com") || from.contains("@hotmail.com")){smtpServ="smtp.live.com";port="587";}else if(from.contains("@ymail.com") || from.contains("@yahoo.com") || from.contains("@rocketmail.com") || from.contains("@yahoo.in")){smtpServ="smtp.mail.yahoo.com";port="465";}Properties props = System.getProperties();
          // -- Attaching to default Session, or we could start a new one --

    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.host",smtpServ);        
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", port);

        Session session1 = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from,pass);
            }
        });Message message = new MimeMessage(session1);message.setFrom(new InternetAddress(from));             
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));

    message.setSubject(subject);
     message.setText(body);
          // -- Set some other header information --

    message.setHeader("MyMail", "Java Mail Test");
     message.setSentDate(new Date());Transport.send(message);System.out.println("Message sent to"+to+" OK."); }
    catch (Exception ex)
    { ex.printStackTrace();System.out.println("Exception "+ex); }
Теги:
email

2 ответа

1
Лучший ответ

Отправка почтовых сообщений через Java (с использованием Java Mail API) требует установки хоста SMTP, который отправит вашу электронную почту получателю после правильной проверки входа в систему. Я использовал Java Mail с идентификаторами Gmail и Gmail в качестве хост-сервера SMTP. Некоторые поставщики услуг электронной почты не позволяют отправлять электронные письма за пределами своих собственных веб-сервисов (что делает их несовместимыми с Java Mail).

Но для поддержки нескольких отправителей вам необходимо сделать следующее:

  1. Измените SMTP-сервер на правильный хост в соответствии с используемым идентификатором электронной почты.
  2. Запустите Authenticator с новым адресом электронной почты и паролем при каждом изменении идентификатора отправителя.
  3. Затем отправьте свое сообщение.

Мое предложение состояло в том, чтобы сохранить эти идентификаторы и пароли отправителя (и SMTP-хосты), когда программа изначально запускается, а затем повторите вышеуказанные шаги с необходимыми изменениями для каждой пары идентификаторов и паролей электронной почты.

Оговорка:

По-моему, лучше всего придерживаться одного отправителя, несколько сообщений с похожим контентом, разными адресами отправителей, могут быть помечены как спам получателем услуг электронной почты получателей.

0
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));

замените эту вещь,

message.setRecipients(Message.RecipientType.TO, Address[] addresses);

[NB-адреса - требуемые идентификаторы.]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню