适用于制作消息的Gmail SMTP

时间:2012-08-11 15:26:59

标签: java email gmail javamail

我在我的应用程序中设置了一些自动电子邮件任务。那就是我每天都会向客户发送特定于应用程序的电子邮件以提醒他们约会等。使用Gmail的smtp适合生产任务,除了这里的简单消息之外还有吗?实现我自己的smtp服务器有什么好处,比如Apache James?

2 个答案:

答案 0 :(得分:1)

Gmail TOS禁止未经请求的商业电子邮件。一般情况下,我不会向公众部署任何依赖Gmail的服务。我认为Gmail无论如何都会将电子邮件收件人列表限制为100,因此如果您尝试向100多人发送相同的邮件,它可能会失败。

出于声誉原因,通常您需要自己的IP来发送邮件。对于我从事自由职业工作的大多数客户,我建议使用价格合理的合作伙伴服务,例如http://sendgrid.com/ ...拥有自己的IP意味着您可以合法地管理您作为批量电子邮件发件人的声誉。而且您不必担心Gmail会因为违反服务条款而关闭您。 Gmail也不会为您提供有关可传递性的指标,因此您不会知道您是否成功发送了这些指标。

在为一家主要的电子邮件营销人员工作过后,我可以告诉您,如今只是向SMTP服务器发送邮件是不够的。所有主要邮件服务提供商都会执行诸如批量邮件的发件人识别密钥等操作他们还会测量消息并标记最终在特定时间内提交过多消息的发件人。如果您希望发送邮件而不是SPAM文件夹,则需要完成大量工作并启动具有专用IP的专用服务器,或者您应该使用能够为您完成某些工作的供应商。

答案 1 :(得分:0)

我同意@Richthofen - 使用gmail在生产环境中发送电子邮件是一个糟糕(和不道德)的想法; Amazon SES或Sendgrid是这里最好的解决方案。如果您想运行自己的SMTP服务器,请记住它将与您的应用程序共享资源,并可能会降低它的速度。

但是我使用gmail使用javamail API测试开发/测试环境。这是代码:

public class EmailSender{

    public void send(){
      //javamail code
      Session mailSession = createSmtpSession();
      //javamail code
    }

    private Session createSmtpSession() {
        final Properties props = new Properties();
        props.setProperty ("mail.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.smtp.port", "" + 587);
        props.setProperty("mail.smtp.starttls.enable", "true");
        props.setProperty ("mail.transport.protocol", "smtp");
        // props.setProperty("mail.debug", "true");

        return Session.getDefaultInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(
                    "<gmail ID in user@domain format goes here>", 
                    "<password goes here>");
            }
        });
    }
}