Rails 应用程序 Ruby 中的电子邮件功能的 Sendgrid

Sendgrid for an email feature within Ruby on Rails app

我想使用 Sendgrid 管理我在朋友的帮助下开发的 3.2.2 版本 rails 应用程序的外发电子邮件。在她的 local/dev 版本中,她使用 gmail 在应用程序中使用电子邮件。我需要 sendgrid 和 运行.

我什至不能让它在本地工作。

来自我的 development.rb 文件

config.action_mailer.default_url_options = { :host => 'localhost:3030' }
  
  config.action_mailer.smtp_settings = {
    :user_name      => ENV['EMAIL_USERNAME'],
    :password       => ENV['EMAIL_PASSWORD'],
    :domain         => 'myapplicationdomain.com',
    :address        => 'smtp.sendgrid.net',
    :port           => 587,
    :authentication => 'plain',
    :enable_starttls_auto => true
  }
  config.action_mailer.delivery_method = :smtp

然后我的应用程序的根目录中有一个变量文件,其中包括以下内容:

export EMAIL_USERNAME=sendgridusername
export EMAIL_PASSWORD=sendgridpassword
export MAIL_TO=report@myapplicationdomain.com

这是我的邮件程序的代码

class StatusMailer < ActionMailer::Base
  default from: "reports@myapplicationdomain.com"
  def status_report(report)
      @greeting = "Hello"
      @report = report
      if ENV['MAIL_TO']
        email = ENV['MAIL_TO'] if ENV['MAIL_TO']
      else
        email = @report.user.email
      end
      @statuses = @report.statuses
      @reviewers = @report.user.reviewers
      bcc = []
      @reviewers.each do |reviewer|
        bcc.append(reviewer.email)
      end
      @bcc = bcc
      mail(to: email, bcc: bcc, subject: 'Status Report')
  end
end

我是否遗漏了一些其他设置?变量中的 MAIL_TO 字段呢,我不确定应该设置什么,或者是否需要声明它。

还有我应该编辑的其他文件吗?我几天前就开始工作了,但是功能不知何故消失了:0

Rails服务器说邮件已发送,但sendgrid没有记录;通讯组列表中的地址也不会收到电子邮件。

提前感谢您的帮助。

您的 config/environments/development.rb 中是否有以下设置?

config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true

如果没有,请将它们添加到您的配置文件并重新启动您的服务器。

更新:

此错误表明您未通过身份验证。您确定 ENV['EMAIL_USERNAME']ENV['EMAIL_PASSWORD'] 变量的值是 present/correct 吗?

这个post: Sendgrid / email sending issues in Ruby on Rails (hosted on Heroku)

让我起来 运行。关键是将 SMTP 和 sendgrid 信息放在 environment.rb 文件中。

我无法确切解释为什么会产生这种差异,但确实如此。