微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Mail API适用于localhost bu,不适用于Google App引擎

如何解决Java Mail API适用于localhost bu,不适用于Google App引擎

我有一个使用Java Mail API的发送电子邮件逻辑,当我在本地主机上时可以正常工作,但是一旦部署在Google云平台上,电子邮件就会发送到我的servlet,但是再也不会传递。 我是从GoDaddy购买的电子邮件,地址为:xxx@mydomain.com。 在阅读了Google Cloud Platform上的文档并在StackOverflow上找到了一些评论之后,我已经配置了防火墙规则,但似乎没有任何作用允许端口25、465和587上的进出(我知道google不允许端口25上的流量)。 我不想使用诸如sendbird之类的第三方电子邮件发件人...因为我以前使用的是Elastic,并且我不需要第三方电子邮件发件人,所以JavaMail就足够了。 因此,我认为Java邮件对于GCP应该足够了。 谁能帮我吗? 这是我的发送电子邮件逻辑


import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 *
 * @author sidibe ibrahim
 * Sending email logic
 */
public class EmailSender {

    static MessagingException me;

    public static boolean sendMail(String from,String password,String message,String to[],String title) throws UnsupportedEncodingException {
        String host = "smtpout.secureserver.net";
        Properties props = System.getProperties();
        props.put("mail.smtp.starttls.enable","true");
        props.put("mail.smtp.host",host);
        props.put("mail.smtp.user",from);
        props.put("mail.smtp.password",password);
        props.put("mail.smtp.host",465);
        props.put("mail.smtp.auth","true");
        props.put("mail.smtp.ssl.trust","*");
        
        Session session = Session.getDefaultInstance(props,null);
        MimeMessage mimeMessage = new MimeMessage(session);
        try {
            mimeMessage.setFrom(new InternetAddress(from,"xxx"));
            InternetAddress[] toAddress = new InternetAddress[to.length];
            for (int i = 0; i < to.length; i++) {
                toAddress[i] = new InternetAddress(to[i]);
            }
            for (int i = 0; i < toAddress.length; i++) {
                mimeMessage.addRecipient(Message.RecipientType.TO,toAddress[i]);
            }
            //sdd subject
            mimeMessage.setSubject(title);

            //set message to mimeMessage
            mimeMessage.setText(message,"UTF-8","html");
            Transport transport = session.getTransport("smtp");
            transport.connect(host,from,password);
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
            transport.close();
            return true;
        } catch (MessagingException m) {
            me.printstacktrace();
        }

        return false;
    }
}

解决方法

App Engine Mail API (也支持JavaMail已被弃用。

相反,GCP recommends使用第三方邮件提供商,例如:


编辑

但是,如果您仍然想继续使用过时的解决方案,请参阅article,有关使用Mail API发送电子邮件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。