Email Java邮件在云服务器中不工作

Email Java邮件在云服务器中不工作,email,jakarta-ee,google-cloud-platform,gmail,jakarta-mail,Email,Jakarta Ee,Google Cloud Platform,Gmail,Jakarta Mail,我有一个在GlassFish服务器上运行的JavaEEWeb应用程序。我已经编写了以下代码通过应用程序发送电子邮件。 当我在家用电脑和笔记本电脑上测试应用程序时,它会立即发送电子邮件。当我在谷歌云服务器上运行同一个应用程序时,它会出现超时异常。可能的原因是什么 package com.divudi.ejb; import java.util.Properties; import javax.ejb.Schedule; import javax.ejb.Stateless; import jav

我有一个在GlassFish服务器上运行的JavaEEWeb应用程序。我已经编写了以下代码通过应用程序发送电子邮件。 当我在家用电脑和笔记本电脑上测试应用程序时,它会立即发送电子邮件。当我在谷歌云服务器上运行同一个应用程序时,它会出现超时异常。可能的原因是什么

package com.divudi.ejb;

import java.util.Properties;
import javax.ejb.Schedule;
import javax.ejb.Stateless;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

@Stateless
public class EmailManagerEjb {

    final static String USERNAME = "mygmailaccount@gmail.com";
    final static String PASSWORD = "mygmailpassword";
    static Session session = null;

    public void sendEmail1(String toEmail, String messageHeading, String messageBody) {
        Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        if (session == null) {
            session = Session.getInstance(props,
                    new javax.mail.Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(USERNAME, PASSWORD);
                }
            });
        }
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(USERNAME));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(toEmail));
            message.setSubject(messageHeading);
            message.setText(messageBody);
            Transport.send(message);
            System.out.println("Send Successfully");
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }

    }

}

在阅读了stdunbar的评论之后,我为google云计算引擎的端口25、465和587创建了防火墙例外

然后一切都开始运转良好

现在电子邮件已成功发送


如果您使用的是App Engine,则可以使用。或者,如果您使用的是Compute Engine,那么我们建议您使用另一种邮件服务,如:
中第一节中的。

Google Compute Engine不允许在端口25、465和587上进行出站连接。简言之,你不能用Gmail做到这一点,你需要这样做。