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 文件中。
我无法确切解释为什么会产生这种差异,但确实如此。
我想使用 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 文件中。
我无法确切解释为什么会产生这种差异,但确实如此。