我正在运行一个非常基本的 Javamail 程序来尝试发送电子邮件。这是带有 main() 的独立程序。一旦它开始工作,我计划在 tomcat 下运行的 servlet 中使用 Javamail。
运行此程序时出现 AUTH LOGIN failed 错误。我尝试了几种不同的属性设置,但都没有解决问题。
然后我在 SO 上找到了一篇帖子,建议降低我的 Google 帐户中所需的安全级别。当我降低安全设置时,身份验证成功。
当然,我立即回到了 Google 帐户的更高安全级别。
我的问题是,如何使我的应用程序更安全,以便 gmail 不拒绝身份验证?
程序代码如下所示。该程序与 SO 上许多其他 Javamail 问题中的代码非常相似。
尝试Javamail.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 = "from@example.com";
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();
}
}
最佳答案
您可能想使用 OAuth2 authentication .
关于java - 使用 javamail,gmail 由于应用程序安全性较低而拒绝身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801391/