javax.mail.SendFailedException: недействительные адреса (при попытке отправить emal с помощью Rediffmail) - PullRequest
1 голос
/ 09 июля 2011

Эта программа пытается отправить электронное письмо, сначала подключившись к smtp.rediffmail.com. Нет ошибки времени компиляции или исключения времени компиляции. Но когда я пытаюсь запустить следующую программу, она генерирует следующее исключение.

javax.mail.SendFailedException: неверные адреса; Вложенное исключение: com.sun.mail.smtp.SMTPAddressFailedException: 421 Авторизация не удалась: пожалуйста, авторизуйтесь сначала получаю сообщение

Я не могу понять, что такое исключение и почему я получаю это исключение.

Вот полная программа. В этом я попытался установить TLS соединение с сервером переадресации почты.

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

class rediff {
   public static void main(String args[]) {
      Properties props = new Properties();
      props.put("mail.smtp.host", "smtp.rediffmail.com");
      props.put("mail.stmp.user", "from");

      //To use TLS
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.password", "password");

      Session session = Session.getDefaultInstance(props, new Authenticator() {
        @Override
            protected PasswordAuthentication getPasswordAuthentication() {
               String username = "from";
               String password = "password";
                return new PasswordAuthentication("from", "password");
            }
      });
       String to = "me@gmail.com";
       String from = "from@rediff.com";
       String subject = "Testing...";
       MimeMessage msg = new MimeMessage(session);
         try {
           msg.setFrom(new InternetAddress(from));
           msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));
           msg.setSubject(subject);
           msg.setText("rediff program working...!");
           Transport transport = session.getTransport("smtp");
           transport.send(msg);
           System.out.println("fine!!");
         }   catch(Exception exc) {
                 System.out.println(exc);
              }
   }
}

Почему я получаю это исключение?

Ответы [ 3 ]

1 голос
/ 09 июля 2011

согласно: http://www.techtalkz.com/microsoft-outlook/193842-pop3.html

В настройках учетной записи включите «Вход на входящий сервер перед отправкой почты» на вкладке «Исходящий сервер» в свойствах вашей учетной записи.Расположение этих свойств и вкладок зависит от версии Outlook, но вы решили, что информация не важна.

Ошибка связана со службой SMTP, которую вы пытаетесь использовать со своего клиента.Это не проблема кода.Проверьте настройки rediffmail.com учетной записи

0 голосов
/ 15 марта 2013

Проблема с кодом заключается в следующем:

Transport transport = session.getTransport("smtp");
transport.send(msg);

метод send является статическим, и вы не должны обращаться к нему с помощью экземпляра класса Transport. это должно быть - Transport.send (msg);

0 голосов
/ 09 июля 2011

Вы пытаетесь использовать аутентификацию TLS, но я не вижу никаких настроек порта в вашем коде.Обычно сервер smtp использует разные порты для аутентификации TLS / SSL, попробуйте установить его через mail.smtp.socketFactory.port.Для TLS значение по умолчанию 587, для SSL - 993, насколько я помню.

    props.put("mail.smtp.socketFactory.port", port);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
...