class SendGridActionMailerAdapter::Converters::Personalizations

Public Instance Methods

assign_attributes(sendgrid_mail, value) click to toggle source
# File lib/sendgrid_actionmailer_adapter/converters/personalizations.rb, line 26
def assign_attributes(sendgrid_mail, value)
  Array(value).each do |personalization|
    sendgrid_mail.add_personalization(personalization)
  end
end
convert(mail) click to toggle source
# File lib/sendgrid_actionmailer_adapter/converters/personalizations.rb, line 16
def convert(mail)
  # Separate emails per each To address.
  # Cc and Bcc addresses are shared with each emails.
  cc_addrs = mail[:cc]&.addrs
  bcc_addrs = mail[:bcc]&.addrs
  mail[:to].addrs.map do |to_addr|
    to_personalization(to_addr, cc_addrs, bcc_addrs)
  end
end
validate(mail) click to toggle source
# File lib/sendgrid_actionmailer_adapter/converters/personalizations.rb, line 8
def validate(mail)
  error_messages = []
  if mail.to_addrs.empty?
    error_messages << "'to_addrs' must not be empty."
  end
  error_messages
end

Private Instance Methods

to_personalization(to_addr, cc_addrs, bcc_addrs) click to toggle source
# File lib/sendgrid_actionmailer_adapter/converters/personalizations.rb, line 34
def to_personalization(to_addr, cc_addrs, bcc_addrs)
  ::SendGrid::Personalization.new.tap do |p|
    p.add_to(::SendGrid::Email.new(email: to_addr.address, name: to_addr.display_name))
    Array(cc_addrs).each do |addr|
      p.add_cc(::SendGrid::Email.new(email: addr.address, name: addr.display_name))
    end
    Array(bcc_addrs).each do |addr|
      p.add_bcc(::SendGrid::Email.new(email: addr.address, name: addr.display_name))
    end
  end
end