java - com.sun.mail.smtp.SMTPSendFailedException : 530-5. 5.1 需要身份验证(Java 邮件)

标签 java gmail jakarta-mail

因此,我正在尝试让 Java Mail 正常工作,但由于我看到的有关该站点的其他答案均无效,我不得不假设在过去一年左右的时间里发生了一些变化。所以我很抱歉,如果这个问题看起来像一个重复的问题,我不知道为什么它不起作用。以下是我的代码:

try{
        Properties property = new Properties();
        property.setProperty("mail.smtp.host", "smtp.gmail.com");
        property.setProperty("mail.smtp.starttls.enable", "true");
        //property.setProperty("mail.smpt.port", "25");
        property.setProperty("mail.smtp.user", "myEmail@gmail.com");
        property.setProperty("mail.smtp.auth", "true");

        System.out.println("Mail Check 1");

        Session session = Session.getDefaultInstance(property);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("myEmail@gmail.com"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress("myEmail@gmail.com"));

        System.out.println("Mail Check 2");

        message.setSubject("Oil Error Report");
        message.setText(emailMessage);

        System.out.println("Mail Check 3");

        Transport transport = session.getTransport("smtps");
        transport.connect("smtp.gmail.com",465,"myEmail@gmail.com","myPassword");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

        System.out.println("Mail Sent");
    }catch(Exception ex){
        System.out.println("Mail fail");
        System.out.println(ex);
    }

我开始进行 Mail Check 3,然后出现以下异常:

com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 u3sm10254140ioi.27 - gsmtp

这没有意义,因为我将 mail.smtp.auth 设置为 true。我查看了过去的答案,并尝试在发布之前让它工作一段时间。我假设它很简单..任何帮助将不胜感激!谢谢!

最佳答案

public class EmailSender {    
    public void sendEmail(String emailMessage){

        try{
            final String fromEmail = ""; //requires valid gmail id
            final String password = ""; // correct password for gmail id
            final String toEmail = ""; // can be any email id 

            System.out.println("TLSEmail Start");
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com"); //SMTP Host
            props.put("mail.smtp.port", "587"); //TLS Port
            props.put("mail.smtp.auth", "true"); //enable authentication
            props.put("mail.smtp.starttls.enable", "true"); //enable STARTTLS

                //create Authenticator object to pass in Session.getInstance argument
            Authenticator auth = new Authenticator() {
                //override the getPasswordAuthentication method
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(fromEmail, password);
                }
            };
            Session session = Session.getInstance(props, auth);

            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(fromEmail));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));

            System.out.println("Mail Check 2");

            message.setSubject("Oil Error Report");
            message.setText(emailMessage);

            System.out.println("Mail Check 3");

            Transport.send(message);
            System.out.println("Mail Sent");
        }catch(Exception ex){
            System.out.println("Mail fail");
            System.out.println(ex);
        }
    }
}

这是让它工作所需的代码!现在是 2014 年 11 月,目前适用于 gmail!我希望这段代码能帮助节省一些人的时间,花了我很多时间!除了此代码,您还必须更改您的电子邮件设置以允许此类电子邮件。第一次尝试时,您会收到一封来自谷歌的电子邮件,它将引导您完成更改设置的过程。

谢谢,祝你好运!

关于java - com.sun.mail.smtp.SMTPSendFailedException : 530-5. 5.1 需要身份验证(Java 邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728132/

相关文章:

java - JTable 添加新行

java - 用定时器绘图不工作

java - 如何使用 apache poi 打破 Excel 单元格中的文本

java - 如何将 json 的 Maven 依赖项添加到 >= Java 9 中的模块

java - 尝试使用 JavaMail 提取 POP3 收件箱文件夹时,我没有收到任何电子邮件

java - 重定向退回邮件,并从退回邮件中读取附件名

gmail - 在 James Mail Server 中发送外部邮件的问题

google-apps-script - Google Apps Script Class GmailApp 批量操作?

google-apps-script - 使用 Google Apps 脚本在 Gmail 中创建新过滤器

java - 连接到 imap 服务器并处理根文件夹的内容