JavaMail异常javax.mail.AuthenticationFailedException 534-5.7.9需要特定于应用程序的密码

4nkexdtk  于 9个月前  发布在  Java
关注(0)|答案(7)|浏览(82)

我想使用JavaMailAPI发送邮件
我已经做了一些编码,但它是不工作抛出异常:-
消息发送失败javax.mail.AuthenticationFailedException:534-5.7.9需要特定于应用程序的密码。

package com.appreciationcard.service;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.appreciationcard.dao.DAOFactory;
import com.appreciationcard.forms.ComposeForm;

public class MailServiceImpl implements MailService {

public boolean mailsent(ComposeForm composeForm) {
    String to = composeForm.getTo();
    String from = composeForm.getFrom();
    String cc = composeForm.getCc();
    String bcc = composeForm.getBcc();
    String subject = composeForm.getSubject();
    String messages = composeForm.getMessage();
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", true);
    props.put("mail.smtp.port", "587");
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.debug", "true");
    System.out.println("Properties" + props);
    Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(
                            "[email protected]", "xxxx");
                }
            });
    try {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                to));
        message.setSubject(subject);
        message.setText(messages);
        Transport.send(message);
    } catch (MessagingException mex) {
        System.out.println("Message Sending Failed" + mex);
        mex.printStackTrace();
    } 

}

}
我在服务器控制台上遇到异常
消息发送失败javax.mail.AuthenticationFailedException:534-5.7.9需要特定于应用程序的密码。
欲了解更多信息,请访问534 5.7.9 http://support.google.com/accounts/bin/answer.py?answer=185833 o5sm11464195pdr.50 - gsmtp

请大家帮忙解决这个问题

ltskdhd1

ltskdhd11#

您已为Google帐户启用Two phase authentication,因此应用程序将无法使用实际密码登录您的Google帐户。Google希望您为您使用的每个应用程序生成一个应用程序特定的密码(并给予名称),然后使用该密码从您的应用程序登录到您的Google帐户。这允许您在启用两步身份验证时不将密码给予第三方应用程序。
另一种方法是让您的应用程序支持重定向到Google页面,以使用Google Authenticator应用程序生成的用户名和密码以及代码进行身份验证。
link清楚地解释了要做什么。

avwztpqn

avwztpqn2#

延长至2023年

  1. two steps verification-必须执行此步骤才能继续

2)登录并添加一个电话号码,并验证与文本消息
比在绿色“V”

之后将变成的
3)按下“两步验证”,向下到列表的末尾,然后单击“应用密码

1.然后在“选择应用程序”写的应用程序的名称,然后按“创建”

在打开的页面中填写描述,然后按genarate
1.在打开“Genarated应用程序密码复制创建的密码,并使用它在您的smpt密码作为通常的密码(检查你不复制空格),它

如何使用它转到您要设置的应用程序或设备中的Google帐户设置。将您的密码替换为上面显示的16个字符的密码。就像您的普通密码一样,此应用程序密码赠款您对Google帐户的完全访问权限。你不需要记住它,所以不要把它写下来或与任何人分享。

daolsyd0

daolsyd03#

只需为您的帐户创建一个应用程序密码并使用该密码。
创建密码的步骤:
进入您的帐户设置(https://myaccount.google.com/)-->>安全-->>在登录到谷歌-->>应用程序密码-->>输入您的凭据登录到您的帐户-->>选择“应用程序”和“设备”-->>生成。
将密码复制并粘贴到某处。
您可以使用此密码代替您的帐户密码。

7fhtutme

7fhtutme4#

你可能正在尝试通过一个启用了双重身份验证的gmail帐户发送邮件。您需要以SMS消息的形式发送到您的移动终端或通过Google Authenticator应用程序生成6位数的身份验证令牌,才能继续操作。或者,您可以通过Google的基于Web的UI生成应用程序特定的密码,并在通过Java代码访问邮件帐户时使用该密码。问题中的link you included将引导您完成整个过程。

i5desfxk

i5desfxk5#

错误消息和KB文章似乎是相当正确的:您需要使用Google Mail服务器的应用程序密码。您可以在Google的帐户页面上创建这些一次性密码。

cunj1qz1

cunj1qz16#

如果您无法找到应用程序密码..
1.首先打开两步身份验证。
1.转到Link https://myaccount.google.com/apppasswords并设置应用程序密码。

bwitn5fc

bwitn5fc7#

Gmail帐户->安全- > 2步验证- >应用程序密码(页面底部)-创建应用程序密码帐户(提供任何名称)-保存-密码将生成。
获取密码并将其保存在“使用SMTP身份验证”部分下的密码字段中。
这是最新的一个,为我工作。

相关问题