ruby-on-rails – 使用SendGrid模板的Rails Mailer
发布时间:2020-12-16 23:33:38 所属栏目:百科 来源:网络整理
导读:如何使用smtpapi- ruby gem将我的rails邮件绑定到Sendgrid?我已经关注了他们的 limited documentation,但我的电子邮件没有通过,我已经验证了我的SendGrid实现在发送普通电子邮件时工作正常,所以不是这样.这就是我所拥有的: user_controller.rb def create
如何使用smtpapi-
ruby gem将我的rails邮件绑定到Sendgrid?我已经关注了他们的
limited documentation,但我的电子邮件没有通过,我已经验证了我的SendGrid实现在发送普通电子邮件时工作正常,所以不是这样.这就是我所拥有的:
user_controller.rb def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to @user,notice: 'User was successfully created.' } format.json { render :show,status: :created,location: @user } header = Smtpapi::Header.new header.add_to(@user.email) header.add_substitution('user',[@user.name]) header.add_substitution('body',"You've registered! This is from the controller.") header.add_filter('templates','enable',1) header.add_filter('templates','template_id','xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx') header.to_json UserNotifier.welcome(header).deliver else format.html { render :new } format.json { render json: @user.errors,status: :unprocessable_entity } end end end 邮寄/ user_notifier.rb class UserNotifier < ApplicationMailer default from: "test@test.com" def welcome(header) headers['X-SMTPAPI'] = hdr.to_json mail(subject: "Welcome to the site!") end end 视图/ user_notifier / welcome.html.erb <html> <body> Hi -user-<br /> Thanks so much for joining us! <p>-body-</p> Thanks,<br /> The Microblog Team </body> </html> 我在SendGrid活动日志中没有看到任何内容,所以它甚至没有被发送到那里,至少我的猜测是这样. 我究竟做错了什么? 解决方法
我认为你混淆了你的变量.你调用hdr.to_json,param名称是header,它也已经转换为json.
您应该将标头元数据直接包含在UserNotifier中: headers "X-SMTPAPI" => { "sub": { "%name%" => [user.name] },"filters": { "templates": { "settings": { "enable": 1,"template_id": 'xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' } } } }.to_json # the 'to' email can be overridden per action mail( from: 'test@test.com',to: 'recipient@test.com',subject: "Hello World" ) 如果UserNotifier.welcome用于应用的其他部分,您也可以传递内容: UserNotifier.welcome(user: @user,subject: "Welcome!").deliver_now # user_notifier.rb class UserNotifier < ApplicationMailer default from: "test@test.com" def welcome(user:,subject:,template: "default" ) # template's default view is "default" headers "X-SMTPAPI" => { "sub": { "%name%" => [user.name] },"filters": { "templates": { "settings": { "enable": 1,"template_id": 'xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' } } } }.to_json mail( from: 'test@test.com',to: user.email,subject: subject,template_path: 'path/to/view',template_name: template ) # this would try to render the view: `path/to/view/default.erb` end end 在模板中,您可以通过添加标记的名称来包含替换标记: <h1>Hello %name%!</h1> More information about substitution tags 查看using their template system上的Sendgrid文档 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |