通过Gmail发送电子邮件,但配置不同的电子邮件地址

时间:2014-04-01 11:17:44

标签: ruby-on-rails ruby email gmail actionmailer

我正在尝试使用GMail的smtp服务器从我的rails应用程序发送电子邮件。

我发送的电子邮件看起来像是从我自己的Gmail地址发送的,而我希望它们来自info@myapp.com。

我使用三种身份验证方式配置了这个东西,我的应用程序已经获得了它唯一的密码。这是我的production.rb

  config.action_mailer.default_url_options = {
    host: 'my ip', 
    protocol: 'https'
  }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.asset_host = "https://my ip"

这是我的initializers/smtp.rb

MyApp::Application.configure do
   config.action_mailer.smtp_settings = {
    enable_starttls_auto: "true",
    address: "smtp.gmail.com",
    port: "587",
    domain: "mydomain.com",
    authentication: :plain,
    user_name: 'myusername@gmail.com',
    password: 'mypassword'
  }
end

有可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我想出了我的解决方案,

我的应用程序中有两个邮件控制器,一个来自设计并发送用户注册相关内容的邮件,另一个通过联系人页面向我发送电子邮件。

首先让我们看一下google中的配置。 Google允许使用不同的发件人电子邮件发送电子邮件,但它要求您拥有邮件地址,因此需要遵循一个程序来验证您在Google上的电子邮件地址。它已列出here

我使用该程序验证了我的电子邮件地址:no_reply@myapp.com我希望我的电子邮件显示为from

一旦gmail验证您拥有我配置设计的发件人电子邮件地址,我就更改了config/initializers/devise.rb添加了一行:

config.mailer_sender = "'myapp_noreply' <no_reply@myapp.com>"

第二,我通过添加以下行来配置我的app/mailers/notifications_mailer

default :from => "no_reply@myapp.com"

我测试了一切,它运行良好。如果我签入电子邮件的标题,我仍然可以看到我的Gmail帐户出现。这些看起来像这样:

Return-Path: <mygmail@gmail.com>
Received: from myapp.com ([2231:7120::f12c:912f:f12e:5123])
        by mx.google.com with ESMTPSA id gn1sm32851027wib.14.2014.04.01.05.20.26
        for <info@casamaroma.it>
        (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
        Tue, 01 Apr 2014 05:20:26 -0700 (PDT)
Sender: Giulio <mygmail@gmail.com>
Date: Tue, 01 Apr 2014 12:20:25 +0000
From: 'myapp_noreply' <no_reply@myapp.com>
Reply-To: 'myapp_noreply' <no_reply@myapp.com>
To: destination@email.com
Message-ID: <533aaf09c5237_2b0b123fe8c3341a@server.mail>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

因为from字段设置为我需要的字段,所以我不会太在乎其他字段。