我正在尝试编写一种方法向我网站上的所有成员发送电子邮件。一切似乎进展顺利,我得到一条消息说出错了。我检查了我的生产文件,并收到以下消息:
Errno::ECONNRESET (Connection reset by peer)
应用程序在遇到此错误之前能够发送大约15封电子邮件。
不确定是否有帮助,但这是我的控制器代码:
def sendLatestEmail
accounts = Account.all
latestFive = Opinion.find(
:all,
:order => "created_at DESC",
:limit => 5
)
accounts.each do |a|
if a.allow_email_notification
AdminMailer.latest_email(a, latestFive).deliver
end
end
flash[:message] = "Latest Emails Delivered"
redirect_to(admin_panel_path)
end
在我的production.rb文件中,我有以下内容:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtpout.secureserver.net",
:port => 80,
:domain => 'somesite.com',
:user_name => 'no-reply@somesite.com',
:password => 'password',
:authentication => 'login',
:enable_starttls_auto => false
}
关于问题可能是什么的任何想法?
我有一个与godaddy建立的电子邮件帐户,所以我不确定您可以发送的电子邮件数量是否有某种限制?
我一直在寻找简单的工作者,但我想确保如果我能自己解决这个问题,就不会浪费我的钱。
谢谢,
布赖恩
答案 0 :(得分:0)
SMTP出站的端口80有点奇怪(25是典型端口),但如果它成功传递邮件...似乎是服务器问题 - 看不到任何代码问题。
FWIW,我已经停止尝试使用SMTP,现在使用http://postmarkapp.com/。他们的价格非常具有竞争力,并且它使用他们的gem进入两行配置(不改变你的实际代码),从而落入ActionMailer。没有附属,只是传递它,因为我已经花了我的生命力量试图获得各种SMTP服务来玩球。
答案 1 :(得分:0)
长消息发送作业肯定应该在后台作业中完成,但是您也可以使用Kernel.fork来分叉该代码,并使用一段代码继续运行,尽管它有时会导致一些奇怪的东西。 / p>
要检查的一些事项:
是的,用于smtp的端口80听起来有点奇怪,是否有任何电子邮件最终被送到了?
如果您在rails控制台中运行代码,它是否正常工作?
答案 2 :(得分:0)
我使用mongrel更新了服务器,并且工作正常.webrick有时无法解码长消息发送作业。