Rails
config.action_mailer.delivery_method = :smtpconfig.action_mailer.perform_deliveries = trueconfig.action_mailer.raise_delivery_errors = trueconfig.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 端口)。
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") endend请使用 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'