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, user=xxx@gmail.com, 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应该也是登录失败的啊”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值