gpt4 book ai didi

ruby-on-rails - 将 Amazon SES 与 Rails ActionMailer 结合使用

转载 作者:行者123 更新时间:2023-12-03 07:35:46 29 4
gpt4 key购买 nike

让 ActionMailer 在 Rails 3 中通过 Amazon SES 发送邮件的最佳方式是什么?

编辑:

这现在是一个 gem :

gem install amazon-ses-mailer

https://rubygems.org/gems/amazon-ses-mailer

https://github.com/abronte/Amazon-SES-Mailer

最佳答案

设置 Rails 3.2 以使用 Amazon 的简单电子邮件服务 (SES) 发送电子邮件非常简单。 您不需要任何额外的 gem 或猴子补丁即可使其工作。

SES 支持 SMTP 上的 STARTTLS 以及 TLS/SSL。下面演示了如何使用 SES 设置 Rails for STARTTLS。

先决条件

  1. 如果您运行的是 Rails Mac OS X,则可能需要先正确配置 OpenSSL for Ruby,然后才能使用 STARTTLS。如果您使用 Ruby 1.9.3 和 RVM,以下是执行此操作的一种方法:

    rvm pkg install openssl
    rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr

如果您不这样做,当您尝试发送电子邮件时,Ruby 可能会出现段错误。

  • 确保您已通过 AWS 验证您的发件人电子邮件地址。您只能发送经过验证的电子邮件地址作为发件人的电子邮件。转到 SES 的 AWS 控制台左侧菜单中的“已验证发件人”选项。

  • 确保您拥有用于身份验证的 AWS SMTP 用户名和密码。转至 AWS SES 控制台左侧菜单上的“SMTP 设置”选项进行设置。系统将首先提示您创建 IAM 用户(默认值:ses-smtp-user),然后将显示 SMTP 用户和密码,它们看起来像常见的 AWS key 和密码。请注意,IAM 用户(即 ses-smtp-user)不是您将用于身份验证的 SMTP 用户。

  • 配置 Rails

    在 config/environments/development.rb 和 config/environments/development.rb 中,添加以下内容:

      config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
    :address => "email-smtp.us-east-1.amazonaws.com",
    :port => 587, # Port 25 is throttled on AWS
    :user_name => "...", # Your SMTP user here.
    :password => "...", # Your SMTP password here.
    :authentication => :login,
    :enable_starttls_auto => true
    }

    发送电子邮件

    就是这样。现在您可以继续创建邮件程序并开始发送电子邮件以获得乐趣和利润!

    创建示例邮件程序

    rails g mailer user_mailer

    在app/mailer/user_mailer.rb中:

        class UserMailer < ActionMailer::Base
    # Make sure to set this to your verified sender!
    default from: "your@verifiedsender.com"

    def test(email)
    mail(:to => email, :subject => "Hello World!")
    end
    end

    在views/user_mailer/test.erb中:

        A quick brown fox jumped over the lazy dog.

    现在,启动控制台并发送测试电子邮件:

        rails c

    Loading development environment (Rails 3.2.1)
    1.9.3p125 :001 > UserMailer.test("your@email.com").deliver

    关于ruby-on-rails - 将 Amazon SES 与 Rails ActionMailer 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798437/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com