-
Notifications
You must be signed in to change notification settings - Fork 32
/
transactional_mail.rb
30 lines (26 loc) · 1.14 KB
/
transactional_mail.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'sendgrid-ruby'
include SendGrid
include Rails.application.routes.url_helpers
class TransactionalMail
# Currently returns true on success, false on error
def self.reset_password(user, token)
port = if Rails.env.development? then 3000 else nil end
reset_url = "#{url_for(controller: 'app', subdomain: 'www', port: port)}reset-password?token=#{token}"
mail = SendGrid::Mail.new
mail.from = SendGrid::Email.new(email: 'n:point <support@npoint.io>')
personalization = SendGrid::Personalization.new
personalization.add_to(SendGrid::Email.new(email: user.email))
personalization.add_substitution(SendGrid::Substitution.new(key: '%name%', value: user.name))
personalization.add_substitution(SendGrid::Substitution.new(key: '%reset_url%', value: reset_url))
mail.add_personalization(personalization)
mail.template_id = 'bdf0a64b-087d-4c5f-a955-fb6589d3422a'
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
# TODO(sentry): Log this failure
return false
end
true
end
end