Как отобразить текущее_пользователь / приглашенное_пользователем отображение электронной почты для разработки приглашения
Я использую свою собственную почтовую программу вместо того, чтобы придумывать что-то для электронной почты для меня, согласно документации для устройства.
Вот как я это делаю:
class User < ActiveRecord::Base
attr_reader :raw_invitation_token
end
class InvitationsController < Devise::InvitationsController
def create
@from = params[:from]
@subject = params[:invite_subject]
@content = params[:invite_content]
@user = User.invite!(params[:user], current_user) do |u|
u.skip_invitation = true
end
email = NotificationMailer.invite_message(@user, @from, @subject, @content)
end
end
class NotificationMailer < ActionMailer::Base
def invite_message(user, venue, from, subject, content)
@user = user
@token = user.raw_invitation_token
invitation_link = accept_user_invitation_url(:invitation_token => @token)
mail(:from => from, :bcc => from, :to => @user.email, :subject => subject) do |format|
content = content.gsub '{{first_name}}', user.first_name
content = content.gsub '{{last_name}}', user.first_name
content = content.gsub '{{full_name}}', user.full_name
content = content.gsub('{{invitation_link}}', invitation_link)
format.text do
render :text => content
end
end
end
end
но когда я получил письмо, что from
является demo@gmail.com
и это определено в development.rb
для конфигации почтовика. однако я хочу email
из from
должно быть current user
означает, что кто приглашает кого-то, когда я получил.
Помогите мне, пожалуйста.
1 ответ
Это невозможно Подумайте о последствиях, если кто-нибудь может отправить электронное письмо, используя чужой адрес электронной почты! Лучший вариант - указать имя отправителя в поле from
заголовок, сохраняя при этом ваш стандартный адрес электронной почты. Вы можете установить его с
:from => "#{user.first_name} #{user.last_name} <#{from}>"
В основном просто получить от быть отформатирован как Sender's name <your@email.com>
Если вы хотите добавить reply-to
с адресом электронной почты пользователя вы можете передать его в качестве параметра в следующем формате:
:reply_to => user.email
Чтобы использовать приведенный вами пример, он будет выглядеть так:
mail(:reply_to => from, :bcc => from, :to => @user.email, :subject => subject) do |format|
(это предполагает, что вы уже получили from
параметр установлен где-то по умолчанию, что я считаю, вы делаете)