跳转到内容

Rails

config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { host: "acme.com", protocol: "https" }
config.action_mailer.smtp_settings = {
address: "smtp.spacepost.dev",
port: 25976,
user_name: "spacepost",
password: ENV.fetch("SPACEPOST_API_KEY"),
authentication: :plain,
enable_starttls_auto: true
}

enable_starttls_auto: true 会在登录前通过 STARTTLS 升级连接。不要设置 ssl: true 或 tls: true:暂不提供隐式 TLS(465 端口)。

app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: "Acme <hello@acme.com>"
layout "mailer"
end

为每封邮件添加标签或发送计划:

class UserMailer < ApplicationMailer
def welcome(user)
headers["X-SpacePost-Tags"] = "category=welcome"
mail(to: user.email, subject: "Welcome to Acme")
end
end

请使用 Active Job(deliver_later),这样缓慢的 SMTP 调用就不会阻塞 Web 请求。

终端窗口
bin/rails runner 'ActionMailer::Base.mail(from: "hello@acme.com", to: "delivered@test.spacepost.dev", subject: "Test", body: "It works").deliver_now'