首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在openshift服务器内部通过gmail-account发送javamail邮件?

如何在openshift服务器内部通过gmail-account发送javamail邮件?
EN

Stack Overflow用户
提问于 2014-11-06 03:42:26
回答 2查看 1.2K关注 0票数 4

我在Openshift Free上运行了一个Free应用程序(redhat web凡客)。在这个应用程序中,我想用javax.mail-api通过我的gmail帐户发送一封电子邮件。当我试图在我的开发者机器上运行我的代码尝试时,它在使用SSL和不使用SSL的情况下都工作得很好。但是,当我在我的openshift服务器上从JSP页面运行它时,它不能工作。我从gmail得到了这样的回复:

代码语言:javascript
运行
复制
534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbs0N
534-5.7.14 -wfEXm3iqKdenfgsums1_oLzBr3toWk44lKCVSpdKHkI2cJpo5ytmXFAU2LVn_4a3wrT-2
534-5.7.14 YUjbzlo4QJZRTxuWxujUOMJW8m5HMbUgHqZp0cBWjGZH-Nr5CZrHql_uZx_6IaEot3NJ-m
534-5.7.14 pBj85PCczPqx2q7NFQ6faPMgDRp7yEXlDAKOEZZ10gjxhQ3NLGFYV-_n9yS2ae49ZQOFHn
534-5.7.14 VTLSwBg> 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/bin/answer.py?answer=78754 g4sm1374527qas.22 - gsmtp

下面是不带SSL的代码:

代码语言:javascript
运行
复制
public static void sendGmail(String to, String subject, String text) throws AddressException, MessagingException
{
    final String SMTP_HOST = "smtp.gmail.com";
    final String SMTP_PORT = "587";
    final String GMAIL_USERNAME = "xxx@gmail.com";
    final String GMAIL_PASSWORD = "xxx";

    System.out.println("Process Started");

    Properties prop = System.getProperties();
    prop.setProperty("mail.smtp.starttls.enable", "true");
    prop.setProperty("mail.smtp.host", SMTP_HOST);
    prop.setProperty("mail.smtp.user", GMAIL_USERNAME);
    prop.setProperty("mail.smtp.password", GMAIL_PASSWORD);
    prop.setProperty("mail.smtp.port", SMTP_PORT);
    prop.setProperty("mail.smtp.auth", "true");

    Session session = Session.getInstance(prop, new Authenticator()
    {
        protected PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(GMAIL_USERNAME,
                    GMAIL_PASSWORD);
        }
    });
    session.setDebug(true);


    MimeMessage message = new MimeMessage(session);

    message.setFrom(new InternetAddress(GMAIL_USERNAME));
    message.addRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
    message.setSubject(subject);
    message.setText(text);
    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
    Transport transport = session.getTransport("smtp");
    transport.connect(SMTP_HOST, GMAIL_USERNAME, GMAIL_PASSWORD);
    transport.sendMessage(message, message.getAllRecipients());
}

下面是使用SSL的代码:

代码语言:javascript
运行
复制
public static void sendGmail(String to, String subject, String text) throws AddressException, MessagingException
{
    String host = "smtp.gmail.com";
    final String GMAIL_USERNAME = "xxx@gmail.com";
    final String GMAIL_PASSWORD = "xxx";

    Properties props = new Properties();
    props.put("mail.smtps.host", host);
    props.put("mail.smtps.auth", "true");
    Session session = Session.getInstance(props, null);
    session.setDebug(true);
    MimeMessage msg = new MimeMessage(session);
    msg.setSubject(subject);
    msg.setText(text);
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    msg.setFrom(new InternetAddress(username));
    msg.setHeader("X-Mailer", "smtpsend");
        msg.setSentDate(new Date());

        SMTPTransport t = (SMTPTransport)session.getTransport("smtps");

    try
    {
        t.connect(host, username, password);
        t.sendMessage(msg, msg.getAllRecipients());
    } 
    finally
    {
        t.close();
    }
}

如你所见,我在调试模式下为会话运行我的尝试,所以下面是我尝试的输出:

我的开发人员机器上使用SSL的调试输出

代码语言:javascript
运行
复制
DEBUG: setDebug: JavaMail version 1.4.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
220 mx.google.com ESMTP ny6sm229296lbb.2 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465

EHLO fredand
250-mx.google.com at your service, [90.230.21.163]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
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 XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER"
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: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 
AUTH LOGIN
334 VXNlcm5hbWU6
bm9ycnVkZGVuLnZhZ2ZvcmVuaW5nQGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
bm9ycnVkZGVuOTc=
235 2.7.0 Accepted
DEBUG SMTP: use8bit false
MAIL FROM:<xxx@gmail.com>
250 2.1.0 OK ny6sm229296lbb.2 - gsmtp
RCPT TO:<xxx@hotmail.com>
250 2.1.5 OK ny6sm229296lbb.2 - gsmtp
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   xxx@hotmail.com
DATA
354  Go ahead ny6sm229296lbb.2 - gsmtp
Date: Tue, 4 Nov 2014 15:23:48 +0100 (CET)
From: xxx@gmail.com
To: xxx@hotmail.com
Message-ID: <30266940.0.1415111029890.JavaMail.RPS@fredand>
Subject: Subject_Tue Nov 04 15:23:48 CET 2014
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: smtpsend

text_Tue Nov 04 15:23:48 CET 2014
.
250 2.0.0 OK 1415111029 ny6sm229296lbb.2 - gsmtp
QUIT
221 2.0.0 closing connection ny6sm229296lbb.2 - gsmtp

使用SSL的openshift服务器的调试输出

代码语言:javascript
运行
复制
DEBUG: setDebug: JavaMail version 1.4.4
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
220 mx.google.com ESMTP 4sm1230842qax.48 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465

EHLO ex-std-node449.prod.rhcloud.com
250-mx.google.com at your service, [54.90.46.53]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
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 XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER"
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: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN
334 VXNlcm5hbWU6
bm9ycnVkZGVuLnZhZ2ZvcmVuaW5nQGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
bm9ycnVkZGVuOTc=
534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsvV
534-5.7.14 5K74amuA1WqDS9CFS1UPmuS3XUVU7lq0Agwb5DPcG69Z5fkYe6RUZrzAKPDWy9tQzq2BDg
534-5.7.14 1AxC2MmT1D1UXOXLG8cZuf7yKxKEUtaLo79a-fROXRiwCvMaqdvYXhqiIslXDTWJQZVe5W
534-5.7.14 qYvj9_ov5cziZe3ao5usZ-o58tHCv48yzrRm5SppAESXnvmv35ZLy4U9qF14GLEXHT7Wzj
534-5.7.14 QuIfn6w> 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/bin/answer.py?answer=78754 4sm1230842qax.48 - gsmtp

我的开发人员机器上的调试输出没有使用SSL

代码语言:javascript
运行
复制
DEBUG: setDebug: JavaMail version 1.4.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
220 mx.google.com ESMTP x6sm542099lbj.40 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 587

EHLO fredand
250-mx.google.com at your service, [90.230.21.163]
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 fredand
250-mx.google.com at your service, [90.230.21.163]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
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 XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER"
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: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 
AUTH LOGIN
334 VXNlcm5hbWU6
bm9ycnVkZGVuLnZhZ2ZvcmVuaW5nQGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
bm9ycnVkZGVuOTc=
235 2.7.0 Accepted
DEBUG SMTP: use8bit false
MAIL FROM:<xxx@gmail.com>
250 2.1.0 OK x6sm542099lbj.40 - gsmtp
RCPT TO:<xxx@hotmail.com>
250 2.1.5 OK x6sm542099lbj.40 - gsmtp
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   xxx@hotmail.com
DATA
354  Go ahead x6sm542099lbj.40 - gsmtp
From: xxx@gmail.com
To: xxx@hotmail.com
Message-ID: <27966883.0.1415135485593.JavaMail.RPS@fredand>
Subject: Subject_Tue Nov 04 22:11:24 CET 2014
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

text_Tue Nov 04 22:11:24 CET 2014
.
250 2.0.0 OK 1415135486 x6sm542099lbj.40 - gsmtp

不带SSL的openshift服务器的调试输出

代码语言:javascript
运行
复制
DEBUG: setDebug: JavaMail version 1.4.4
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc.,1.4.4]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
220 mx.google.com ESMTP g4sm1374527qas.22 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 587

EHLO ex-std-node449.prod.rhcloud.com
250-mx.google.com at your service, [54.90.46.53]
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 ex-std-node449.prod.rhcloud.com
250-mx.google.com at your service, [54.90.46.53]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER
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 XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER"
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: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN
334 VXNlcm5hbWU6
bm9ycnVkZGVuLnZhZ2ZvcmVuaW5nQGdtYWlsLmNvbQ==
334 UGFzc3dvcmQ6
bm9ycnVkZGVuOTc=
534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbs0N
534-5.7.14 -wfEXm3iqKdenfgsums1_oLzBr3toWk44lKCVSpdKHkI2cJpo5ytmXFAU2LVn_4a3wrT-2
534-5.7.14 YUjbzlo4QJZRTxuWxujUOMJW8m5HMbUgHqZp0cBWjGZH-Nr5CZrHql_uZx_6IaEot3NJ-m
534-5.7.14 pBj85PCczPqx2q7NFQ6faPMgDRp7yEXlDAKOEZZ10gjxhQ3NLGFYV-_n9yS2ae49ZQOFHn
534-5.7.14 VTLSwBg> 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/bin/answer.py?answer=78754 g4sm1374527qas.22 - gsmtp

你们知道为什么我的openshift服务器不能工作吗?

向Fredrik致以最好的问候

EN

回答 2

Stack Overflow用户

发布于 2014-11-07 05:15:15

感谢大家的帮助。似乎我需要在我的gmail账户上激活IMAP。在那之后,它工作得很好。

向Fredrik致以最好的问候

票数 1
EN

Stack Overflow用户

发布于 2018-03-16 23:26:31

我在使用gmail时遇到了一些困难,所以我转向了SendGrid,以便将JavaMail集成到一个部署到OPENSHIFT上的web应用程序中,作为一个虚拟项目。我用的是SendGrid试验。

一些变化--

代码语言:javascript
运行
复制
           // The SendGrid SMTP server.
             String SMTP_HOST_NAME = "smtp.sendgrid.net";

              Properties   properties = new Properties();
              // Specify SMTP values.
              properties.put("mail.transport.protocol", "smtp");
              properties.put("mail.smtp.host", SMTP_HOST_NAME);
              properties.put("mail.smtp.port", 587);
              properties.put("mail.smtp.auth", "true");

你得把这两个...

代码语言:javascript
运行
复制
final String sendGridUser ="NameUChoose"; // Use At SendGrid Registration
   final String sendGridPassword="*****" ; // Use At SendGrid Registration

其余部分与其他JavaMail代码基本相同。

您还必须验证您的凭据,所以--

代码语言:javascript
运行
复制
           // Create the authenticator object.
              Authenticator authenticator = new SMTPAuthenticator();

创建一个单独的java类,比如--

代码语言:javascript
运行
复制
package com.rana;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class SMTPAuthenticator   extends Authenticator
{
    final String sendGridUser ="NameUChoose";
    final String sendGridPassword="*******;
       public PasswordAuthentication getPasswordAuthentication()
       {
            String username = sendGridUser;
            String password = sendGridPassword;

            return new PasswordAuthentication(username, password);   
       }


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26765696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档