我试图弄清楚如何使用Rails 4,以便可以使用Sendgrid模板发送我的设计电子邮件。
我在Sendgrid制作了我的第一个模板。
我无法看到如何为链接命名。 sendgrid模板页面上的插入链接按钮允许您选择链接是URL还是电子邮件。我选择了网址。然后它有一个选项来完成https:地址。我想给那个地址一个掩盖的名字(即' Schedule' - 他是https日程网址的链接)。
如何在Sendgrid模板中执行此操作?
另外,我有一个设置确认令牌的链接:
<%= link_to 'Confirm account', confirmation_url(@resource, confirmation_token: @token) %>
如何在sendgrid电子邮件模板中将该令牌提供给Sendgrid?
答案 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%>
这对我有用,也希望你。