У меня запущена очень простая программа Javamail, чтобы попробовать отправлять электронные письма. Это автономная программа с main(). Как только я его заработаю, я планирую использовать Javamail в сервлете, работающем под tomcat.
При запуске этой программы я получал ошибку AUTH LOGIN. Я попробовал несколько разных настроек свойств, ни одна из которых не решила проблему.
Затем я нашел сообщение о SO, которое предложило снизить необходимый уровень безопасности в моей учетной записи Google. Аутентификация прошла успешно, когда я опустил настройку безопасности.
Конечно, я сразу вернулся к более высокому уровню безопасности в учетной записи Google.
У меня есть вопрос: как я могу сделать свое приложение более безопасным, чтобы gmail не отказывался от аутентификации?
Программный код, показанный ниже. Программа очень похожа на код во многих других вопросах Javamail на SO.
TryJavamail.java
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class TryJavamail {
public static void main(String args[]) throws MessagingException {
String submitName = "John Doe";
String submitEmail = "[email protected]";
String submitMessage = "This is the message";
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.ssl.enable", "true");
props.setProperty("mail.smtp.port", "465");
Session session = Session.getInstance(props, null);
session.setDebug(true);
Message message = new MimeMessage(session);
message.setSubject("Message from myapp website submit");
message.setText(submitName + "; " + submitMessage);
Address toAddress = new InternetAddress(submitEmail);
message.setRecipient(Message.RecipientType.TO, toAddress);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", "---userid---", "---password---");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}