как отобразить текущее_пользователь / приглашенное_пользователем отображение электронной почты для разработки приглашения - PullRequest
0 голосов
/ 17 декабря 2018

Я использую свою собственную почтовую программу вместо того, чтобы придумывать для меня электронные письма, согласно devise документации.

Вот как я это делаю:

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 Ответ

0 голосов
/ 17 декабря 2018

Это невозможно.Подумайте о последствиях, если кто-нибудь может отправить электронное письмо, используя чужой адрес электронной почты!Лучший вариант - указать имя отправителя в заголовке 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 параметр, установленный где-то по умолчанию, что, я полагаю, вы делаете)

...