com.sun.mail.smtp.SMTPSendFailedException:530-5.5.1需要身份验证(Ja



所以我正在努力让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!我希望这个代码能帮助节省一些时间,占用了我的大部分时间!除了此代码,您还必须更改电子邮件设置,以允许此类电子邮件。你第一次尝试时会收到一封来自谷歌的电子邮件,它会引导你更改设置。

谢谢,祝你好运!

你看URL了吗?你按照那里的所有步骤走了吗?发生了什么?

你会想纠正这些常见的错误。

请注意,由于您使用的是"smtps"协议,mail.smtp.*属性的none将适用。但这没关系,因为由于调用connect方法的方式,您根本不需要它们。

相关内容

最新更新