Можно ли заменить default из: на электронную почту из базы данных в Rails Action Mailer?
Я пытаюсь передать электронное письмо от пользователя в поле from: default, чтобы оно выглядело так, как будто оно пришло непосредственно от него. Вот что у меня сейчас. Есть ли способ ввести динамическую переменную в поле по умолчанию из поля?
class IntroMailer < ActionMailer::Base
default from: "Me@gmail.com"
def intro_email(intro)
@intro = intro
mail(to: @intro.person1_email, subject: 'Testing Intro Email')
end
end
3 ответа
Вы можете изменить это в действии Mailer mail
метод:
class IntroMailer < ActionMailer::Base
default from: "Me@gmail.com"
def intro_email(intro, current_user)
mail(to: intro.person1_email, subject: 'Testing Intro Email', from: current_user.email)
end
end
но ПРЕДУПРЕЖДЕНИЕ. Почтовые клиенты, такие как Google, довольно умны в обнаружении спама. Если они увидят, что определенный SMTP-сервер отправляет электронные письма с большим количеством различных атрибутов "от", ваш рейтинг спама повысится, а ваши электронные письма будут отфильтрованы фильтрами спама. Чтобы обойти это, выберите один или два по умолчанию from
электронные письма (например, support@mywebsite.com & jobs@mywebsite.com), которые соответствуют типу электронного письма, а затем добавить динамический reply_to
атрибут вместо.
class IntroMailer < ActionMailer::Base
default from: "ourteam@oursite.com"
def intro_email(intro, current_user)
mail(to: intro.person1_email, subject: 'Testing Intro Email', reply_to: full_from(current_user))
end
private
def full_from(user)
address = Mail::Address.new user.email
address.display_name = user.full_name
address.format
end
end
По умолчанию это просто адрес по умолчанию, поэтому вы можете перезаписать его при отправке почты следующим образом:
mail(from: @some_object.mail, ...)