【发布时间】:2018-06-24 11:23:29
【问题描述】:
我为我的 rails 应用程序设置了一个邮件程序。我发誓几天前它还在工作,但现在当我尝试发送电子邮件时突然收到 EOFError。我可以从我的 rails 控制台发送电子邮件,但是每当我从我的 rails 服务器尝试它时,我都会收到以下极简错误:
EOFError: 到达文件末尾
如果我的配置有问题或某些连接问题,我认为它也不能从控制台工作,所以我很困惑。可能是什么问题?
值得注意的是,我曾经从我使用的电子邮件地址收到“可疑登录尝试被阻止”消息,但我什至不再收到该消息,只有 EOFError。开发和生产都是如此。
我也尝试将端口更改为 465,但没有任何改变。
Development.rb:
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: 'address@gmail.com',
password: 'Password',
authentication: 'plain',
enable_starttls_auto: true
}
Production.rb:
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => 'http://website.com' }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: 'address@gmail.com',
password: 'Password',
authentication: 'plain',
enable_starttls_auto: true
}
mailers/order_mailer.rb
class OrderMailer < ApplicationMailer
default from: 'address@gmail.com'
def contact(body)
@body = body
mail(to: "otheraddress@gmail.com", subject: "New")
end
end
为了测试,我将以下内容分别输入到我的 rails 控制台和我的 binding.pry 服务器控制台中。前者发送邮件成功,后者给出EOFError。
OrderMailer.contact("body").deliver
【问题讨论】:
-
在开发中将身份验证类型从“普通”更改为“登录”是否会影响?
-
它是否在寻找(但未能找到)邮件视图或布局或其他文件?
-
@rantingsonrails 我将“plain”更改为“login”,现在它可以用于开发,但不能用于生产。
-
@JoeMorano dev 和 prod 现在都在使用 587 端口吗?
-
@JoeMorano 另一个生产尝试的猜测
config.action_mailer.default_url_options = { host: 'website.com', protocol:'http' }
标签: ruby-on-rails ruby email smtp ruby-on-rails-5