当前位置: 首页 > 知识库问答 >
问题:

无法使用servlet和JavaMail发送电子邮件

荣轶
2023-03-14

我正在使用JavaMail发送电子邮件,但得到的错误是javax。邮政AuthenticationFailedException:535-5.7.8不接受用户名和密码。在535.7.8了解更多信息https://support.google.com/mail/?p=BadCredentialsg188sm3298732pfc。24-gsmtp

  • 我正在做的是,我有一个类作为Email Utive
  • 上面的类有一个静态方法,sendEmail()-它将SMTP服务器设置和消息详细信息作为参数
  • 我把SMTP服务器设置放在我的web.xml文件中,但不知道出了什么问题

我的电子邮件实用程序

public class EmailUtility {
public static void sendEmail(String host, String port, final String userName, final String password,
        String toAddress, String subject, String message) throws AddressException, MessagingException {

    // setting SMTP server properties
    Properties properties = new Properties();
    properties.put("mail.smtp.host", host);
    properties.put("mail.smtp.port", port);
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(userName, password);
        }
    });
    // creates a new e-mail message
    Message msg = new MimeMessage(session);

    msg.setFrom(new InternetAddress(userName));
    InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
    msg.setRecipients(Message.RecipientType.TO, toAddresses);
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    msg.setText(message);

    // sending the e-mail
    Transport.send(msg);

}

}

这是我的网站。xml文件

 <context-param>
    <param-name>host</param-name>
    <param-value>smtp.gmail.com</param-value>
</context-param>

<context-param>
    <param-name>port</param-name>
    <param-value>587</param-value>
</context-param>

<context-param>
    <param-name>user</param-name>
    <param-value>test.123@gmail.com</param-value>
</context-param>
<context-param>
    <param-name>pass</param-name>
    <param-value>12345698</param-value>
</context-param>

这是我的servlet类

public void init() {
    // reading SMTP server setting from web.xml file
    ServletContext context = getServletContext();
    host = context.getInitParameter("host");
    port = context.getInitParameter("port");
    user = context.getInitParameter("user");
    pass = context.getInitParameter("pass");
}

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // reading form fields
    String recipient = request.getParameter("recipient");
    String subject = request.getParameter("subject");
    String content = request.getParameter("content");
    System.out.println(recipient+" sub "+subject+" content "+content);

    String resultMessage = "";

    try {
        EmailUtility.sendEmail(host, port, user, pass, recipient, subject,
                content);
        resultMessage = "The e-mail was sent successfully";
    } catch (Exception ex) {
        ex.printStackTrace();
        resultMessage = "There were an error: " + ex.getMessage();
    }

我在做正确的事情,但不知道问题是什么

如果我在gmail中启用较少的安全应用程序设置,那么它的工作正常,我不认为这是解决问题的正确方法,因为不是每个用户都要这样做

伙计们帮帮我,我不知道我在做什么奇怪的事,谢谢

编辑有没有其他资源可以让我在gmail到yahoo这样的跨平台上发送邮件?我愿意使用任何其他资源来完成我正在尝试的任务

共有1个答案

太叔灿
2023-03-14

不同的服务器有不同的安全要求。如果你想处理所有这些问题,你需要在你的应用程序中使用一些特殊情况。

有时,您需要用户为电子邮件服务器创建特定于应用程序的密码。

有时,如果服务器支持OAuth,则需要支持它。

 类似资料:
  • 我有一个Outlook.com的电子邮件帐户。我希望我的Java应用程序能够使用JavaMail从该电子邮件帐户发送电子邮件。为此,我通过OAuth授予了我的应用程序访问权限。 我已经能够使用msgshow中提供的精彩示例应用程序通过IMAP成功连接.java。但是,我正在尝试通过SMTP通过我的 Outlook.com 电子邮件帐户发送电子邮件,但我没有任何运气。我尝试过同时使用msgsend.

  • 我需要通过我的应用程序发送一封电子邮件,比如使用带有OAuth的javamail API,但我需要如何使用我在下面添加的代码。 我的代码:

  • 使用 Servlet 发送一封电子邮件是很简单的,但首先您必须在您的计算机上安装 JavaMail API 和 Java Activation Framework)JAF)。 您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。 您可以从 Java 网站下载最新版本的 JAF(版本 1.1.1)。 你也可以使用本站提供的下载链接: Ja

  • 我在使用我的公司交换服务器通过Javamail发送电子邮件时遇到了一些问题。我们有一个应用程序通过gmail服务器发送电子邮件没有任何问题,但对于Google策略的一些更改,我们希望使用公司服务器来完成这项工作。我确信会话属性中的问题,但我无法找到使其工作的方法 这是显示日志的错误 javax.mail.MessagingException:无法连接到SMTP主机:mail.company.com

  • 问题内容: 我尝试使用 Spring javamail 从 Heroku 发送电子邮件,但出现错误。 __ 我的代码: 豆子: 和控制器: 在localhost:8080和localhost:5000上,测试成功完成,但是在heroku服务器上,我有例外: 验证失败;嵌套的异常是javax.mail.AuthenticationFailedException:534-5.7.14请通过Web浏览器

  • 我试图使用Spring javamail从Heroku发送电子邮件,但出现了错误。 我的代码: 豆: 和控制器: 在localhost:8080和localhost:5000上,测试成功完成,但在heroku服务器上,我有一个异常: 身份验证失败;嵌套的异常是javax。邮政身份验证失败异常:534-5.7.14请通过web浏览器和534-5.7.14登录,然后重试。534-5.7.14在534