Rails 4,使用sendgrid模板

时间:2016-08-03 01:04:03

标签: ruby-on-rails ruby templates devise sendgrid

我试图弄清楚如何使用Rails 4,以便可以使用Sendgrid模板发送我的设计电子邮件。

我在Sendgrid制作了我的第一个模板。

我无法看到如何为链接命名。 sendgrid模板页面上的插入链接按钮允许您选择链接是URL还是电子邮件。我选择了网址。然后它有一个选项来完成https:地址。我想给那个地址一个掩盖的名字(即' Schedule' - 他是https日程网址的链接)。

如何在Sendgrid模板中执行此操作?

另外,我有一个设置确认令牌的链接:

<%= link_to 'Confirm account', confirmation_url(@resource, confirmation_token: @token) %>

如何在sendgrid电子邮件模板中将该令牌提供给Sendgrid?

2 个答案:

答案 0 :(得分:1)

我在这里关注了Sendgrid-ruby文档: Sendgrid-ruby Using MailHelper Class

然后结合了有关如何覆盖其方法的Devise文档: How to Use Custom Mailer Devise

在发送确认令牌的情况下,您可以在模板中创建链接或按钮,并使用SendGrid替换来传递令牌。

示例如下:/mailers/my_custom_mailer.rb

 # Overriding Devise confirmation instructions method.
def confirmation_instructions(record, token, opts={})
   @user = record
   mail = Mail.new
   mail.from = Email.new(email: 'info@example.com')
   mail.subject = 'One last step '+ @user.name
   personalization = Personalization.new
   personalization.add_to(Email.new(email: @user.email))

   # Get the confirmation token & pass it to the substitution in your template
   personalization.add_substitution(Substitution.new(key: '--confirmation--', 
                                                     value: @user.confirmation_token))

   mail.add_personalization(personalization)
   mail.template_id = 'SENDGRID_TEMPLATE_ID_HERE'

   sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
   begin
       response = sg.client.mail._("send").post(request_body: mail.to_json)
   rescue Exception => e
       puts e.message
   end
   super
end

最后在我的SendGrid模板中,我将有一个链接或按钮,如:

https://myexample.com/users/confirmation?confirmation_token=--confirmation--

请注意,-确认-my_custom_mailer.rb

中的确切替换键

答案 1 :(得分:0)

您必须发布更多错误详情才能获得答案。但这可能会有所帮助。

您的邮件程序

class UserMailer < ApplicationMailer
default from: 'your@email.com'

def welcome_email(user)
    @user = user // User
    @url  = 'Url'
    mail(to: @user.email, subject: 'Confirm your account')
end 
end

在您的config / environment / development.rb或production.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.smtp_settings = {
address:              'smtp.gmail.com',
port:                 587,
domain:               'example.com',
user_name:            '',
password:             '',
authentication:       'plain',
enable_starttls_auto: true
}

在您的控制器中 UserMailer.welcome_email(@user).deliver_now或deliver_later

在您的视图文件中

http://myserver.com/accounts/confirm?confirmation_token=<%=@user.confirmation_token%>

这对我有用,也希望你。