Answers:
我发现问题是,尽管我们为域设置了SPF记录,但是我们没有与域相关的DKIM记录。为了在Google Apps中添加DKIM记录,您需要执行以下操作:
然后,您将看到TXT记录分为两部分,一个部分包含域,另一部分包含实际TXT记录。您需要进入服务器上您域的DNS设置并添加此记录。如果您的DNS控制面板不允许您添加的域google._domainkey
,则只需使该域完全合格即可google._domainkey.example.com
。
完成此操作后,给DNS记录一点时间进行传播,然后在Google Apps管理面板中单击“开始身份验证”。如果看到绿色的选中标记,则说明已完成,并且电子邮件应再次开始流过SMTP服务器。
您不得为您应发送的每封电子邮件进行身份验证。
在过程开始时:
Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("example@gmail.com", "password");
之后,使用传输对象发送每个没有启动会话的邮件:
transport.sendMessage(message, message.getAllRecipients());
发送所有电子邮件后,应关闭连接:
transport.close();
@ victorpacheco3107的解决方案为我工作,这就是我在ruby中所做的:
settings = {
address: "smtp.gmail.com",
port: 587,
domain: "mydomain.com",
user_name: "user@mydomain.com",
password: "password",
authentication: "plain"
}
smtp_conn = Net::SMTP.new(settings[:address], settings[:port])
smtp_conn.enable_starttls_auto
smtp_conn = smtp_conn.start(settings[:domain],
settings[:user_name],
settings[:password],
settings[:authentication])
Mail.defaults do
delivery_method :smtp_connection, { :connection => smtp_conn }
end
# send mails..
mail = Mail.new
mail.to('...')
# more mail stuff..
mail.deliver!
# after all mails are sent, end session
smtp_conn.finish
发送批量电子邮件时使用SMTP,它会与每一封邮件一起登录,然后注销。因此,谷歌阻止了您的连接。对我有用的是将SMTPKeepAlive设置为true。