为什么在开发模式下使用 SendGrid SMTP 中继在我的收件箱中看不到从我的 Heroku Rails 应用程序发送的任何电子邮件?
Why can't I see any emails in my inbox sent from my Heroku Rails app using SendGrid SMTP Relay in development mode?
我正在尝试通过 SendGrid 的 SMTP 中继在我的 Rails 4.2 应用程序中从 Mandrill 切换到 SendGrid。我已将 'To Email' 设置为我的个人电子邮件地址,以便我可以查看已发送的电子邮件,但是 none 的电子邮件实际上出现在我的收件箱中,尽管 rails 控制台声称已处理并发送电子邮件。
我相当确定我所有的邮件程序都有适当的 smtp 设置,因为我基本上遵循了 SendGrid 网站上提供的说明:https://sendgrid.com/docs/Integrate/Frameworks/rubyonrails.html
我还测试了通过 telnet 与 SendGrid 的 SMTP 中继的连接,连接成功。
我的 SendGrid 仪表板指示已发送 0 封电子邮件。 None 我的电子邮件出现在“抑制”选项卡下,所以它们不像是被退回或被阻止。
这是我的 config/environment.rb:
ActionMailer::Base.smtp_settings = {
:user_name => 'apikey',
:password => ENV['SENDGRID_API_KEY'],
:domain => 'heroku.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
这是我的 config/environments/development.rb:
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { :host => 'smtp.sendgrid.net' }
这是我的控制器中调用我的 ApplicationMailer 的行:
ApplicationMailer.send_email(user, 'mypersonalemail@email.com', 'Test Subject').deliver
这是执行 mailer 方法时在控制台中打印的内容:
ApplicationMailer#send_email: processed outbound mail in 789.9ms
Sent mail to mypersonalemail@email.com (103.4ms)
但我的收件箱或垃圾邮件文件夹中仍然没有收到任何电子邮件。有谁知道我该如何解决这个问题?提前致谢。
您的域和主机选项有误。使用 localhost:3000(除非您使用的是 docker 或将 localhost:3000 替换为 0.0.0.0:8000 的东西)
#/environments/development.rb
#Mailer Options
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'localhost:3000',
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = { host: 'http://localhost:3000' }
config.action_mailer.asset_host = 'http://localhost:3000'
确保将 sendgrid 凭据作为环境变量添加到本地计算机。要获取它们,请转到您的 heroku 应用并单击设置,然后单击 "reveal config vars"。然后将这些 sendgrid 凭据作为 env 添加到您的本地计算机。变量,你就完成了。
我正在尝试通过 SendGrid 的 SMTP 中继在我的 Rails 4.2 应用程序中从 Mandrill 切换到 SendGrid。我已将 'To Email' 设置为我的个人电子邮件地址,以便我可以查看已发送的电子邮件,但是 none 的电子邮件实际上出现在我的收件箱中,尽管 rails 控制台声称已处理并发送电子邮件。
我相当确定我所有的邮件程序都有适当的 smtp 设置,因为我基本上遵循了 SendGrid 网站上提供的说明:https://sendgrid.com/docs/Integrate/Frameworks/rubyonrails.html
我还测试了通过 telnet 与 SendGrid 的 SMTP 中继的连接,连接成功。
我的 SendGrid 仪表板指示已发送 0 封电子邮件。 None 我的电子邮件出现在“抑制”选项卡下,所以它们不像是被退回或被阻止。
这是我的 config/environment.rb:
ActionMailer::Base.smtp_settings = {
:user_name => 'apikey',
:password => ENV['SENDGRID_API_KEY'],
:domain => 'heroku.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
这是我的 config/environments/development.rb:
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { :host => 'smtp.sendgrid.net' }
这是我的控制器中调用我的 ApplicationMailer 的行:
ApplicationMailer.send_email(user, 'mypersonalemail@email.com', 'Test Subject').deliver
这是执行 mailer 方法时在控制台中打印的内容:
ApplicationMailer#send_email: processed outbound mail in 789.9ms
Sent mail to mypersonalemail@email.com (103.4ms)
但我的收件箱或垃圾邮件文件夹中仍然没有收到任何电子邮件。有谁知道我该如何解决这个问题?提前致谢。
您的域和主机选项有误。使用 localhost:3000(除非您使用的是 docker 或将 localhost:3000 替换为 0.0.0.0:8000 的东西)
#/environments/development.rb
#Mailer Options
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'localhost:3000',
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = { host: 'http://localhost:3000' }
config.action_mailer.asset_host = 'http://localhost:3000'
确保将 sendgrid 凭据作为环境变量添加到本地计算机。要获取它们,请转到您的 heroku 应用并单击设置,然后单击 "reveal config vars"。然后将这些 sendgrid 凭据作为 env 添加到您的本地计算机。变量,你就完成了。