Ruby on rails 联系Rails 4中的表单邮件器

Ruby on rails 联系Rails 4中的表单邮件器,ruby-on-rails,ruby,ruby-on-rails-4,actionmailer,contact-form,Ruby On Rails,Ruby,Ruby On Rails 4,Actionmailer,Contact Form,我正在尝试在Rails 4中构建一个联系人表单,该表单包含姓名、电子邮件和正文,并将其发送到我的电子邮件地址。单击“提交”后,应用程序将正确重定向回联系人页面,但不会发送任何电子邮件 routes.rb 联系_email.html.erb 联系_mailer.rb 事实证明,我并没有为我的Heroku应用程序配置外部SMTP服务(因为我以前从未对电子邮件做过任何事情,所以我不知道该怎么做)。由于我对MailChimp比较熟悉,尤其是因为他们的Mandrill服务有一个免费层(我正在为一个学生组织

我正在尝试在Rails 4中构建一个联系人表单,该表单包含姓名、电子邮件和正文,并将其发送到我的电子邮件地址。单击“提交”后,应用程序将正确重定向回联系人页面,但不会发送任何电子邮件

routes.rb 联系_email.html.erb 联系_mailer.rb
事实证明,我并没有为我的Heroku应用程序配置外部SMTP服务(因为我以前从未对电子邮件做过任何事情,所以我不知道该怎么做)。由于我对MailChimp比较熟悉,尤其是因为他们的Mandrill服务有一个免费层(我正在为一个学生组织构建这个应用程序),我很容易地将Mandrill添加到我的Heroku应用程序中,并在application.rb中包括以下设置:


环境变量由附加组件自动设置。

您是否在开发模式下运行,并将
交付方法设置为
:test
?您在日志中看到您的电子邮件了吗?可能是个愚蠢的问题:您是否更改了config.action\u mailer.perform\u deliveries=true,因为默认情况下这是false,防止从开发环境发送邮件…@np\u无论我是在生产环境中运行还是通过localhost@Danny范霍夫,我确实做到了,但无论我是在开发还是在生产中,都不会收到任何电子邮件。您的代码看起来不错。所以,我猜这和你的smtp设置有关。。。它曾经奏效过吗?换句话说,你确定你的smtp设置正常吗?你需要那些环境文本吗?你不能把它放在引号里吗?你的意思是不是用用户名和密码作为原始字符串,而不是检索一个ENV变量?这会起作用,但不是一个好的做法。在ENV中设置它更安全,因为任何人都无法访问源代码。此外,如果您需要修改这些值,您可以在不重新部署整个应用程序的情况下进行修改。您只需修改ENV并重新启动应用程序。
match '/send_mail', to: 'contact#send_mail', via: 'post'
<!DOCTYPE html>
<html>
    <head>
        <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
        <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <p>You have received the following email from <%= "#{ @name } (#{ @email }):" %></p>
        <p><%= @body %></p>
    </body>
</html>
def send_mail
    name = params[:name]
    email = params[:email]
    body = params[:comments]
    ContactMailer.contact_email(name, email, body).deliver
    redirect_to contact_path, notice: 'Message sent'
end
class ContactMailer < ActionMailer::Base
    default to: # my email address

    def contact_email(name, email, body)
        @name = name
        @email = email
        @body = body`enter code here`

        mail(from: email, subject: 'Contact Request')
    end
end
<div class="container-content">
    <div class="container">
        <%= form_tag(send_mail_path) do %>
            <div class="form-group">
                <%= label_tag 'name', 'Name' %>
                <%= text_field_tag 'name', nil, class: 'form-control', placeholder: 'Your Name' %>
            </div>
           <div class="form-group">
               <%= label_tag 'email', 'Email' %>
               <%= email_field_tag 'email', nil, class: 'form-control', placeholder: 'Your Email Address' %>
           </div>
           <div class="form-group">
               <%= label_tag 'comments', 'Comments' %>
               <%= text_area_tag 'comments', nil, class: 'form-control', rows: 4, placeholder: 'Comments...' %>
           </div>
           <%= submit_tag nil, class: 'btn btn-default btn-about pull-right' %>
       <% end %>
  </div>
</div>
config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
    address: 'smtp.mandrillapp.com',
    port: 587,
    user_name: ENV['MANDRILL_USERNAME'],
    password: ENV['MANDRILL_APIKEY']
}