【问题标题】:Name in Sendgrid Email with Rails使用 Rails 的 Sendgrid 电子邮件中的名称
【发布时间】:2015-04-08 13:57:59
【问题描述】:

我正在使用careerfoundry's 使用 Sendgrid 通过 Heroku 发送电子邮件的教程。我在页面控制器中使用他们的用户邮件和thank_you 操作的确切代码。这段代码大部分都在工作。问题是我在收件箱中收到的主题行是这样的:

来自#{name}的新联系表单消息

User_Mailer.rb

class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def contact_form(email, name, message)
    @message = message
    mail(:from => email, 
            :to => 'your-email@example.com', 
            :subject => "A new contact form message from #{name}")
  end
end

联系表格

<%= form_tag("/thank_you") do %>
    <div class="row">
      <div class="col-md-4">
        <div class="input-group">
            <%= text_field_tag :name, nil, class: 'form-control', placeholder: 'Name' %>
        </div>
      </div>
      <div class="col-md-8">
        <div class="input-group">
          <span class="input-group-addon" id="basic-addon1">@</span>
          <%= text_field_tag :email, nil, class: 'form-control', placeholder: 'Email' %>
        </div>
      </div>
    </div>
    <br>
    <div class="row">
      <div class="col-md-12">
        <div class="input-group text-area-wide">
            <%= text_area_tag :message, nil, class: 'form-control text-area-wide', placeholder: 'Message' %>
        </div>
      </div>
    </div>
    <br>
    <%= submit_tag 'Send Message', class: 'btn btn-success' %>
<% end %>

页面控制器

def thank_you
    @name = params[:name]
    @email = params[:email]
    @message = params[:message] || "Hello!"
    # Only try to send this email on a POST
    # if request.post?
    # or make a feedback form controller and send in the create action

    # ActionMailer::Base.mail( FOR TEST PURPOSES
    #     :from => @email, 
     #  :to => 'erikvdw@comcast.net', 
     #  :subject => "A new contact form message from #{@name}", 
     #  :body => @message).deliver
    UserMailer.contact_form(@email, @name, @message).deliver

  end

【问题讨论】:

    标签: ruby-on-rails heroku actionmailer sendgrid


    【解决方案1】:

    一个快速的解决方法是将字符串分成两部分

    class UserMailer < ActionMailer::Base
      default from: "from@example.com"
    
      def contact_form(email, name, message)
        @message = message
        mail(:from => email, 
                :to => 'your-email@example.com', 
                :subject => "A new contact form message from " + name)  <----
      end
    end
    

    这样记号更清晰,也避免了手动拼接的问题。

    在快速查找后,这似乎也可以工作。根据我发现的几个来源,显然内部需要单引号。我不使用这种表示法,如果有帮助,请告诉我!

    :subject => "A new contact form message from '#{name}'")
    

    【讨论】:

    • 您建议的两种方法都有效。第二个建议中的单引号不是必需的。显然双引号是字符串插值工作所必需的。
    • 很高兴听到,我必须记住这些东西。开始使用该符号对我来说还不错。
    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2014-09-09
    • 2018-11-08
    相关资源
    最近更新 更多