java gmail 在windows環境下可以正常發郵件在liunx下報錯534

java gmail 在windows環境下可以正常發郵件在liunx下報錯534 基本上試遍了各種方案都沒用,開啓IMPA,https://myaccount.google.com/lesssecureapps安全性低,被阻止等等都沒有問題。

主要代碼如下:

Properties prop = new Properties();
        //協議
        prop.setProperty("mail.transport.protocol", protocol);
        //服務器
        prop.setProperty("mail.smtp.host", host);
        //端口
        prop.setProperty("mail.smtp.port", port);
        //使用smtp身份驗證
        prop.setProperty("mail.smtp.auth", "true");
        //使用SSL,企業郵箱必需!
        //開啓安全協議
      /*  MailSSLSocketFactory sf = null;
        try {
            sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
        } catch (GeneralSecurityException e1) {
            e1.printStackTrace();
        }*/
        //ssl對應465端口
       // prop.put("mail.smtp.ssl.enable", "true");
       // prop.put("mail.smtp.ssl.socketFactory", sf);

        //tsl對應587端口
        prop.put("mail.smtp.starttls.enable", "true");

        Session session = Session.getDefaultInstance(prop, new MyAuthenricator(account, pass));
        session.setDebug(true);
        MimeMessage mimeMessage = new MimeMessage(session);

            //發件人
            //mimeMessage.setFrom(new InternetAddress(account,"contacthutv"));        //可以設置發件人的別名
            mimeMessage.setFrom(new InternetAddress(account));    //如果不需要就省略
            //收件人
            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            //主題
            mimeMessage.setSubject(subject);
            //時間
            mimeMessage.setSentDate(new Date());
            //容器類,可以包含多個MimeBodyPart對象
            Multipart mp = new MimeMultipart();

我用的是587端口,因爲465端口在liunx上  telnet smtp.gmail.com 465 不同,具體原因沒查因爲沒太大關係。

報錯內容如下:

DEBUG: setDebug: Jakarta Mail version 1.6.5
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=smtp.gmail.com, user=root, password=<null>
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
220 smtp.gmail.com ESMTP 28sm7815703qkr.96 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 587
EHLO ns541077.ip-xxx.net
250-smtp.gmail.com at your service, [xxx]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
STARTTLS
220 2.0.0 Ready to start TLS
EHLO ns541077.ip-xxx.net
250-smtp.gmail.com at your service, [xxx]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: protocolConnect login, host=smtp.gmail.com, [email protected], password=<non-null>
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
534-5.7.14 IJzdEuiobyncGRnANmxfyP-urV98ruNP9NLb2wjuOWOYSdTVzZr2py8AUoH7d8t8NORSI
534-5.7.14 KdLh31dy7cS6k0c7AWkB592T4YSJhd-SMoQCW9lSKZMKX1cr7W0DcRmrwjCoJxjR>
534-5.7.14 Please log in via your web browser and then try again.
534-5.7.14  Learn more at
534 5.7.14  https://support.google.com/mail/answer/78754 28sm7815703qkr.96 - gsmtp

根據報錯內容找到的答案基本都是說沒開IMAP啊,安全性低,被阻止等等。都沒能解決。

最後根據最主要的報錯信息DEBUG SMTP: AUTH LOGIN failed   找到了答案。登錄失敗。那就是密碼問題咯?

很多人說是要用授權碼而不是登錄密碼。這些人應該是沒有用過gmail發郵件的。用了你就知道gmail跟163和qq不一樣的。

最終的解決方案是google賬號有一個功能叫做“兩步驗證”https://myaccount.google.com/lesssecureapps這個鏈接告訴你這麼開啓,不完全一樣但基本差不多,開啓兩步驗證之後最後一步就是設置設置“應用專用密碼”設置完複製密碼,到代碼裏面替替換掉gmail的登錄密碼就好了。

令我百思不得其解的“爲什麼windows上可以發出去,爲什麼liunx登錄失敗?如果密碼問題那windows應該也是登錄失敗的啊”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章