我们在生产应用中使用SendGrid,它运行正常。我们最近尝试在开发中测试新功能/电子邮件,但似乎无法收到要发送的电子邮件。知道我们哪里出错了?我们正在使用类似的功能来生产,我们也遵循SendGrid的实施指南。感觉就像我错过了一些简单的东西!
首先我导出了SENDGRID_USERNAME
和SENDGRID_PASSWORD
,并将其添加到我的.bash_profile
export SENDGRID_USERNAME=xxxxxxx
export SENDGRID_PASSWORD=xxxxxxx
我已经在控制台中确认这些存在并且是正确的。
创建了developer_email.html.erb
文件:
<p>Hi! Sendgrid test</p>
和DeveloperMailer
文件:
class DeveloperMailer < ActionMailer::Base
default from: "tom@xxxxxx.com"
def developer_email(developer_id)
@recipients = ["tom@xxxxxx.com"]
mail(to: @recipients, subject: 'Does sendgrid work?')
end
end
更新了development.rb
文件:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.sendgrid.net',
port: '587',
domain: 'localhost:3000',
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
authentication: :plain,
enable_starttls_auto: true }
当我在控制台中发送电子邮件时,它的行为就像它发送的那样,但电子邮件实际上从未到过:
DeveloperMailer.developer_email(1)#发送电子邮件。似乎工作:
2.3.1 :001 > DeveloperMailer.developer_email(1)
Rendered developer_mailer/developer_email.html.erb (1.5ms)
DeveloperMailer#developer_email: processed outbound mail in 133.3ms
=> #<Mail::Message:70263824429080, Multipart: false, Headers: <From: tom@xxxxx.com>, <To: ["tom@xxxx.com"]>, <Subject: Does SendGrid Work?>, <Mime-Version: 1.0>, <Content-Type: text/html>>
#But I never get anything sent to my email
知道我可能缺少什么吗?
修改
更新了development.rb文件:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.sendgrid.net',
domain: 'theoremreach.com',
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
authentication: :plain,
enable_starttls_auto: true }
但仍然没有电子邮件。
答案 0 :(得分:0)
domain
是一个SMTP HELO
域,而不是实际环境的域。将其更改为您在SendGrid配置文件中使用的同一个域,并且不要指定端口并尝试一下。
答案 1 :(得分:0)
首先,通过执行以下命令进行telnet
telnet smtp.sendgrid.net 2525
如果您从SMTP服务获得正确的响应,请更改SMTP port from 587 to 2525
在我的情况下,“ 587端口”没有响应
更改端口后对我有用
答案 2 :(得分:0)
您需要先验证发件人电子邮件或发件人电子邮件的域,然后才能使用SendGrid发送电子邮件。参见https://sendgrid.com/docs/ui/sending-email/sender-verification/和https://sendgrid.com/docs/for-developers/sending-email/sender-identity/#domain-authentication