Rails 3 - ActionMailer / Mail gem - 'from'地址正在被覆盖

时间:2012-10-13 15:31:06

标签: ruby-on-rails ruby-on-rails-3 gmail actionmailer mail-gem

我在网站上有一个简单的联系表格。

有一个电子邮件帐户只是为了处理通过联系表单发送的邮件。这是'mycompany.noreply@gmail.com'

问题

当用户填写表单并发送时,会发送两封电子邮件。向网站用户发送一封确认电子邮件,并将实际填写的表格发送给公司。

公司希望如此,当他们收到用户的电子邮件时,他们会回复并且用户的电子邮件地址会自动显示在“收件人”字段中。但是当他们这样做时,他们看到的是“发件人姓名'mycompany.noreply@gmail.com'”而不是“发件人姓名'sender_email_address'”。

代码

class Notifications < ActionMailer::Base

  def enquiry(user)
    @user = user
    mail(to: "employee@mycompany.com", subject: "website enquiry", from: "#{@user.name} <#{@user.email}>")
  end

  def no_reply(user)
    @user = user
    mail(to: @user.email, from: "My Company <mycompany.noreply@gmail.com>", subject: "Message received at mycompany.com")
  end
end

测试

from字段的测试通过。

require "spec_helper"

describe Notifications do

  let(:contact_form) { FactoryGirl.build(:contact_form) }

  context "enquiry" do

    let(:mail) { Notifications.enquiry(contact_form) }

    it "renders the headers" do
      mail.from.should eq([contact_form.email])
    end
  end
end

另外,我正在使用mailcatcher。

Mailcatcher还会在from字段中显示正确的user.email

似乎只是在收到实际电子邮件时(使用gmail)显示错误的地址。

任何帮助表示感谢。

修改

默认邮件设置:

 # mail config settings
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = { 
    :address              => "smtp.gmail.com",
    :port                 => 587,
    :user_name            => 'mycompany.noreply@gmail.com',
    :password             => 'password',
    :authentication       => 'plain',
    :enable_starttls_auto => true  }
来自mailcatcher的

邮件标题

Date: Sat, 13 Oct 2012 21:08:02 +0100
From: Joe Bloggs <joebloggs@gmail.com>
To: mycomany.noreply@gamil.com
Message-ID: <5079ca229969b_67c23fc061434ed023056@Mark-Charless-iMac-2.local.mail>
Subject: website enquiry
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5079ca226fb17_67c23fc061434ed02277b";
 charset=UTF-8
Content-Transfer-Encoding: 7bit



----==_mimepart_5079ca226fb17_67c23fc061434ed02277b
Date: Sat, 13 Oct 2012 21:08:02 +0100
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <5079ca227ec80_67c23fc061434ed02288a@Mark-Charless-iMac-2.local.mail>

2 个答案:

答案 0 :(得分:2)

问题是您使用的是Gmail SMTP服务器。

根据此问题:Rails and Gmail SMTP, how to use a custom from address,您无法设置自定义发件人地址,除非该帐户已链接到您的Gmail帐户。

备选方案:

  1. 使用另一个允许您设置自己的发件人地址的SMTP服务器。
  2. 创建一个基于HTML的精美电子邮件,发送到employee@mycompany.com,其中包含一个大按钮,该按钮是填写表单的用户的电子邮件地址的mailto链接,并确保他们不会不回复自动发送的电子邮件,但在电子邮件中使用此按钮。

答案 1 :(得分:0)

Gmail不允许使用名称欺骗。因为它不会使用默认值:但它将使用SMTP用户名。