我有一个Rails应用程序,它使用表单收集邮件详细信息并通过电子邮件将邮件发送到我的gmail / yahoo帐户。
我已将此添加到config / initializers中的setup_mail.rb:
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:user_name => "my_user",
:password => "my_pass",
:authentication => "plain",
:enable_starttls_auto => true
}
并使用像这样的控制器用于POST路由:
def create
@message = Message.new(params[:message])
if @message.valid?
NotificationsMailer.new_message(@message).deliver!
redirect_to(root_path, :notice => "Message was successfully sent.")
else
flash.now.alert = "Please fill all fields."
redirect_to('#')
end
end
从表单中接受消息参数,如下所示:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"4xgV0umvaTPzYxd18qdJq/GT7QCdXjrPTGR7D9R3AC4=", "message"=>{"name"=>"Deepak", "email"=>"deepakm.ccx@gmail.com", "subject"=>"Hi", "body"=>"Hi"}, "commit"=>"Send"}
无论我在设置中使用Yahoo凭据还是Gmail凭据,我都会收到相同的错误消息。我评论了ActionMailer :: Base.smtp_settings中的所有设置,但仍然遇到此问题。这让我相信这个问题可能与此代码之外的其他内容有关,但我完全没有任何线索。
-Deepak
答案 0 :(得分:0)
您提到代码位于config/initializers
- 我们ActionMailer
正在运行,并通过Gmail发送,但我们将其放入config/environments/developer.rb
文件中:
#Send Email In Development (Use Gmail's Servers)
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "*****.co.uk",
:user_name => "******@gmail.com",
:password => "******",
:authentication => :plain,
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = {
:host => "localhost:3000"
}
也许您可以尝试复制并粘贴上述代码?
答案 1 :(得分:0)
虽然我仍然无法通过ActionMailer发送电子邮件,但我想我会发布一个替代方案。
https://github.com/nu7hatch/gmail
运行良好且更容易,因为您不需要使用任何配置文件。
感谢。