ruby-on-rails - Rails 4 中的联系表格邮件程序

标签 ruby-on-rails ruby ruby-on-rails-4 actionmailer contact-form

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

路线.rb

match '/send_mail', to: 'contact#send_mail', via: 'post'

contact_email.html.erb

<!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>

contact_controller.rb

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

contact_mailer.rb

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

contact.html.erb

<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>

应用.rb

config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

最佳答案

事实证明,我没有使用外部 SMTP 服务配置我的 Heroku 应用程序(因为我以前从未对电子邮件做过任何事情,所以我不知道这样做)。由于我对 MailChimp 比较熟悉,尤其是因为他们的 Mandrill 服务有免费套餐(我正在为学生组织构建此应用程序),所以我很容易将 Mandrill 添加到我的 Heroku 应用程序,并在 应用程序中包含以下设置。 rb:

ActionMailer::Base.smtp_settings = {
    address: 'smtp.mandrillapp.com',
    port: 587,
    user_name: ENV['MANDRILL_USERNAME'],
    password: ENV['MANDRILL_APIKEY']
}

环境变量由插件自动设置。

关于ruby-on-rails - Rails 4 中的联系表格邮件程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769772/

相关文章:

ruby-on-rails - Rails 应用和多语言内容,模型困境

ruby-on-rails - Rails Assets 管道无法正常工作

ruby-on-rails - 为什么这种类似作用域的查询方式不能使用reject呢?

mysql - Rails 4 - 按相关模型排序 created_at - 事件

css - 简单表格无法正确显示

javascript - rails : how to pass data from Ruby to Javascript

ruby-on-rails - axios async wait 函数不返回验证错误

ruby - 为什么a + = 1是Ruby中的线程安全操作?

ruby - Docker Ruby SSL_connect 返回=1 errno=0 状态=错误 : wrong signature type

ruby-on-rails - 在Rails中没有默认值的情况下,change_column_default的可逆迁移