ruby-on-rails – Actionmailer – Sparkpost模板和多语言
这是我第一次在rails项目中设置邮件.
我被告知要使用SparkPost并为多个操作创建不同语言的模板. 为简单起见,我们说一个user_signed_up(用户)邮件. 目前我有这个设置工作: 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 我可以成功发送电子邮件. 虽然,由于多语言和身体不能风格,这绝对不可扩展. 现在我需要设置模板以允许非技术人员调整电子邮件模板. 但这里是我被困的地方,对以下问题的回答将极大地帮助我: 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",{ 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)对于多语言用例,您可以考虑像我们的许多其他客户那样为每种语言创建一个模板. 顺便说一句,这看起来像几个问题 – 我们应该考虑拆分它们吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |