如何使用 Sendgrids API 发送电子邮件以使用 Rails 4 发送电子邮件?我似乎可以把所有的碎片放在一起

Rob*_*Rob 5 ruby google-app-engine ruby-on-rails sendgrid ruby-on-rails-4

我想从谷歌云平台实例发送带有 sendgrids API 的电子邮件。他们有一个关于如何执行此操作简短教程,但它包含电子邮件消息、来自谁、发送给谁以及其他信息,所有app.rb这些信息都不是在 Rails 应用程序中发送消息的正常方式。

我查看了sendgrid ruby​​ 文档,他们也没有很好的信息。所有信息都集中在一个地方,他们没有说明要将它们放入哪些文件,甚至没有提到要使用的任何 smtp 设置。

这是我到目前为止所拥有的

发展.rb

config.action_mailer.delivery_method = :smtp
# SMTP settings
config.action_mailer.smtp_settings = {
 :address              => "smtp.sendgrid.net",
 :port                 => 465,
 :domain               => "mydomain.com",
 :user_name            => ENV['sendgrid_username'],
 :password             => ENV['sendgrid_password'],
 :authentication       => :plain,
 :ssl                  => true,
 :enable_starttls_auto => true
}
Run Code Online (Sandbox Code Playgroud)

宝石文件

gem "sendgrid-ruby"
Run Code Online (Sandbox Code Playgroud)

电子邮件视图在 app/views 中,邮件方法在 app/mailer 中,与正常的 rails 4 应用程序设置相同。

所以我想这是我的主要问题:

  1. 我在哪里调用保存 sendgrid api 密钥的环境变量?
  2. 我在哪里告诉 Action Mailer 使用 sendgrid 或者SendGrid::Mail我在几个地方看到的?
  3. 我什至需要 sendgrid gem 吗?
  4. 使用 sendgrid 通过 SSL 发送的 smtp 设置是否正确?

我是在 Rails 应用程序中发送这样的电子邮件的新手,非常感谢您的帮助。

小智 6

apikey作为名称和实际apikey作为密码:

config.action_mailer.smtp_settings = {
  address:        "smtp.sendgrid.net",
  port:           587,
  domain:         "yourwebsite.com",
  authentication: :plain,
  user_name:      'apikey',
  password:       Rails.application.secrets.sendgrid_api_key
}
Run Code Online (Sandbox Code Playgroud)

来源


小智 0

  1. 使用 Figaro gem: https: //github.com/laserlemon/figaro 它将为您生成一个 application.yml 文件,您可以在其中存储您的 sendgrid_username 和 sendgrid_password。

  2. 您生成了邮件吗?例如,生成邮件程序 user_notifier,您可以在其中定义默认发件人电子邮件,以及如下一些方法:

r

# send a signup email to the user, pass in the user object that contains the 
user email address
default :from => 'hello@yourdomain.com'
def send_signup_email(user)
    @user = user
    mail( :to => @user.email,
        :subject => 'Thanks for signing up!'
    )
end
Run Code Online (Sandbox Code Playgroud)
  1. 不,你不需要它。
  2. https://sendgrid.com/docs/Classroom/Basics/Email_Infrastruct/smtp_ports.html