javax.mail.AuthenticationFailedException: 535 5.7.3 Не удается отправить почту - PullRequest
0 голосов
/ 24 августа 2018

У меня проблема с ошибкой

javax.mail.AuthenticationFailedException: 535 5.7.3

Аутентификация при попытке отправить электронное письмо. Я пытался использовать две разные учетные записи электронной почты. Один использует Сервер Office365 подробности, а другой - Сервер Gmail Сведения.

В обоих случаях я получаю одинаковую ошибку. Мой код ниже. За пределами моего кода адреса электронной почты могут отправлять и получать электронную почту успешно без проблем. Это мой класс электронной почты, так как эта часть не работает. Все остальные аспекты моей программной работы. Будем благодарны за любую помощь, которую вы можете оказать.

    public class SPUREMAIL{

//CONSTANTS - Things that will never change
private static final String HOST = "smtp.office365.com";
private static final String PORT = "587";
private static final String SENDER = "EMAIL";
private static final String PASSWORD = "PASSWORD";
private static final String SUBJECT = "Spur Design has shared a file with you";
private static final String MESSAGE = "This email message was sent from an unmonitored address. Please contact your Spur Design representative for any questions or concerns";

//this item will change, its the direct link to the file
private String URLToFile;
private String recipient;

public SPUREMAIL(String URLToFile, String recipient){
    this.URLToFile = URLToFile;
    this.recipient = recipient;
}

//Properties for email
private Properties getProperties(){
    Properties properties = new Properties();
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.smtp.host", HOST);
    properties.put("mail.smtp.port", PORT);
    properties.put("mail.smtp.user", SENDER);
    properties.put("mail.smtp.password", PASSWORD);
    return properties;
}


//Creating an email session so I can authenticate to server
Session session = Session.getInstance(getProperties(), new javax.mail.Authenticator(){ 
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(SENDER, PASSWORD);
    }
});

public void sendMail(){//This will actually attempt to send the email successfully
    try{
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(SENDER));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
        message.setSubject(SUBJECT);
        message.setText(MESSAGE);
        Transport.getTransport("smtp");
        Transport.connect(HOST, SENDER, PASSWORD, pass);
        Transport.sendMessage(MESSAGE, message.getAllRecipients());
    }
    catch(MessagingException e){
        System.out.println("send failed, exception: " + e);
    }
    System.out.println("Sent!!!!");
}

}

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Несколько предложений, которые вы можете попробовать и проверить, работают ли они для вас.

  1. Если вы пытаетесь использовать Outlook, я предполагаю, что вы пытаетесь подключиться к серверам электронной почты вашей внутренней организации. Попробуйте с портом 25 и проверьте, если установка mail.smtp.starttls.enable в false имеет значение.
  2. Не думаю, что вам нужно использовать имя пользователя и пароль. Вы можете удалить его в случае перспективы. Это понадобится вам в случае Gmail.
  3. Возможно, вы захотите внести в белый список ваш IP-адрес командой брандмауэра. Они должны разрешить соединение с вашей машины.
  4. Попробуйте установить локальный почтовый сервер, я использовал papercut, и он работает как шарм.
  5. Перед отправкой электронной почты с помощью gmail вы должны разрешить незащищенным приложениям доступ к gmail, вы можете сделать это, перейдя в настройки gmail. enter image description here

Удачи.

0 голосов
/ 27 августа 2018

Проблема с моим кодом была двоякой. Во-первых, класс электронной почты не компилировался, когда я компилировал весь свой проект. Это приводило к тому, что мои Транспортные звонки оставались без контроля. Изменил Транспортные вызовы на блок ниже, и после ручной компиляции класса электронной почты я смог отлично отправлять электронные письма. Вся заслуга в том, что Билл Шеннон указал мне правильное направление.

public void sendMail(){//This will actually attempt to send the email successfully
        try{
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(SENDER));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
            message.setSubject(SUBJECT);
            message.setText(MESSAGE);
            Transport.send(message, message.getAllRecipients());
        }
        catch(MessagingException e){
            System.out.println("send failed, exception: " + e);
        }
        System.out.println("Sent!!!!");
    }
}
0 голосов
/ 24 августа 2018

Вы проверили эту ссылку - javax.mail.AuthenticationFailedException: 535 5.7.3 Аутентификация не удалась

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

Кроме того, эта ссылка - https://confluence.atlassian.com/confkb/unable-to-send-email-due-to-javax-mail-authenticationfailedexception-error-message-151519398.html говорит о том, что причиной может быть неправильно настроенный почтовый сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...