【发布时间】:2013-01-11 16:58:48
【问题描述】:
您好,我正在尝试为联系我们表格制作邮件。电子邮件将是 :from user@email.com 和 :to my@email.com 。这可以在开发中通过 SMTP 完成吗? ActionMailer 是真的从用户的电子邮件帐户发送电子邮件,还是只是假电子邮件?我想使用 user@email.com 作为发件人的原因是因为我希望我可以轻松地直接回复该电子邮件。
我正在尝试使用 localhost 并收到错误消息:Errno::ECONNREFUSED (Connection refused - connect(2)): 我认为这是因为我没有正确设置设置。发送此电子邮件是否需要在实际的 gmail 帐户上提供用户名/密码?
这是我现在的设置(我没有任何用户名/密码,所以这可能是我的错误的根源吗?):
ActionMailer::Base.smtp_settings = {
:address => '127.0.0.1',
:port => 25
}
控制器:
def email
ContactMailer.contact_form(params).deliver
end
邮寄者:
class ContactMailer < ActionMailer::Base
default :to => "my@email.com"
def contact_form(sender)
@sender = sender
mail(:from => sender[:email], :subject => "Question from #{sender[:company] ? sender[:company] : "" }
- Contact Us")
end
end
views/contact_mailer/contact_mailer.text.erb:
We have been contacted by <%= @sender[:email] %>
已修复
我将此行添加到我的初始化程序中:
ActionMailer::Base.delivery_method = :sendmail
【问题讨论】:
-
您没有在本地机器 (127.0.0.1) 上运行 SMTP 服务器。您要么需要设置它(这有点复杂,而且在开发中并不真正需要),要么配置开发环境以使用外部 SMTP 服务器(即 Gmail),就像在生产中一样
-
但是如果我使用不同的设置,我怎么知道我的电子邮件是否真的发送了?
-
看看guides.rubyonrails.org/… 和api.rubyonrails.org/classes/ActionMailer/Base.html。您还需要称为 SMTP 服务器的外部服务、地址(地址、端口、凭据以及任何它想要的),您需要将其添加到配置中。它与数据库相同 - 您需要使用 ActiveRecord,但 Rails 不会为您设置它,因此如果您使用 ActionMailer 并且想要发送电子邮件,则需要设置它(搜索您平台的 smtp 服务器) 或使用 Gmail 等外部服务。
-
您遇到的错误(连接被拒绝)只是表明 ActionMailer 无法连接到 127.0.0.1:25 以通过它发送电子邮件。
-
另外:“from”和“to”字段仅用于电子邮件内容,但您可以在连接到 SMTP 服务器时使用不同的凭据(如果它允许您在内容中更改/伪造它们)。
标签: ruby-on-rails