gpt4 book ai didi

ruby-on-rails - Actionmailer - Sparkpost 模板和多语言

转载 作者:行者123 更新时间:2023-12-04 07:39:21 25 4
gpt4 key购买 nike

这是我第一次在 Rails 项目中设置邮件。
我被告知要使用 SparkPost 并为多种操作为不同的语言创建模板。

为简单起见,我们假设一个 user_signed_up(user) 邮件。

目前我有这个设置工作:

Gem 安装:'sparkpost'

mail.rb

ActionMailer::Base.smtp_settings = {
address: "smtp.sparkpostmail.com",
port: 587,
enable_starttls_auto: true,
user_name: "SMTP_Injection",
password: SPARKPOST_API_KEY,
domain: 'foo-bar.com'
}

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.default charset: "utf-8"

application_mailer.rb
require 'sparkpost'
class ApplicationMailer < ActionMailer::Base
default from: "Seal Notification <noreply@foobar.com>"
layout 'mailer'
end

signup_mailer.rb
class SignupMailer < ApplicationMailer
def user_signed_up(user)
receiver = user.email
sender = 'myself@test.com'
title = 'Thanks for registering'
body = 'This is a test body'
sparky = SparkPost::Client.new(SPARKPOST_API_KEY)
sparky.transmission.send_message(receiver,sender,title,body)
end
end

我可以成功发送电子邮件。

虽然,这绝对是不可扩展的,因为多语言和 body 不适合风格。

现在我需要设置模板以允许非技术人员调整电子邮件模板。

SparkPost Template Create

但这是我被卡住的地方,以下问题的答案将极大地帮助我:

1) 如何发送特定的电子邮件模板?

2)如何将变量传递给这些模板?

3) 我如何处理多语言支持?

谢谢你。

最佳答案

Here's an intro article在 SparkPost 中创建模板。

Here's one关于预览模板和发送测试消息 - 包括变量如何工作(又名“替换数据”)。

以 Ruby 为中心的长格式答案如下:

首先对您的代码进行一些观察:看起来您都在全局配置 SMTP,但在注册邮件程序中使用 REST API。我建议通过 SMTP 使用 REST API,因为它具有您需要的模板和其他丰富功能。

1) 您可以通过 SparkPost UI here 管理电子邮件模板。或直接通过 API 调用 as documented here . The template syntax is documented here.

创建并发布模板后,您可以像这样使用 SparkPost 客户端发送(假设您的模板 ID 是“your-template-en”):

require 'sparkpost'

host = 'https://api.sparkpost.com'
SparkPost::Request.request("#{host}/api/v1/transmissions", API_KEY, {
recipients: [
{ address: { email: 'recipient@example.com' } }
],
content: {
template_id: 'your-template-en'
}
})

2) SparkPost 支持消息级和收件人级“substitution_data”,它们是用于模板的 JSON 格式变量。这是一个示例传输请求:
SparkPost::Request.request("#{host}/api/v1/transmissions", API_KEY, {
recipients: [
{
address: { email: 'recipient@example.com' },
substitution_data: {
first_name: 'Recip',
favorites: {
color: 'Orange',
ice_cream: 'Vanilla'
}
}
}
],
content: {
template_id: 'your-template-en'
},
substitution_data: {
title: 'Daily News'
}
})

您现在可以在模板中使用替换数据。例如:
<h1>{{title}}</h1>
<p>Hi {{first_name or 'there'}}</p>
<p>This {{favorites.color}} bulletin is all about {{favorites.ice_cream}} ice cream</p>

注意:收件人替换数据优先于消息级字段。

3) 对于多语言用例,您可能会像我们的许多其他客户一样考虑为每种语言创建一个模板。

顺便说一句,这看起来像几个问题——我们应该考虑把它们分开吗?

关于ruby-on-rails - Actionmailer - Sparkpost 模板和多语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35628731/

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