加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

com.sun.mail.smtp.SMTPSendFailedException:530-5.5.1需要身份

发布时间:2020-12-15 04:44:30 所属栏目:Java 来源:网络整理
导读:所以我试图让 Java Mail工作,因为我在这个网站上看到的其他答案都没有用,我不得不假设在过去一年左右的时间里有些变化.所以,如果这个问题看起来像是一个重复,我无法解释为什么它不起作用.以下是我的代码: try{ Properties property = new Properties(); pro
所以我试图让 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);
    }

我起床邮件检查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!我希望这段代码可以帮助节省时间,占用我的大部分时间!除此代码外,您还必须更改电子邮件设置,以允许允许使用这些电子邮件.您第一次尝试时会收到来自Google的电子邮件,它会指导您更改设置.

谢谢,祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读