2016-07-29 4 views
0

전자 메일 주소를 수집하고 관리자로 로그인하여 모든 가입 된 사람에게 메일을 보낼 수있는 방문 페이지가있는이 응용 프로그램을 개발하려고합니다. 사용자, 나는 액션 우편물과 내 Gmail 계정 SMTP 구성을 사용하고 있습니다.수신자가없는 여러 수신자에게 메일 보내기 다른 사람에게 보내는 메일보기

내가 메일을 보내면 모든 사람이 cc'ed가되고 내 자신의 Google 메일 계정으로 테스트 할 때 다른 사람이 볼 수 있습니다.

Mailforsubcriber 컨트롤러

def create 
@mailforsubscriber = Mailforsubscriber.new(mailforsubscriber_params) 
respond_to do |format| 
    if @mailforsubscriber.save 
       RecipientMailer.newsletter(@mailforsubscriber).deliver_now 

      format.html { redirect_to @mailforsubscriber, notice: 'Mail for subscriber was successfully sent.' } 
      format.json { render :show, status: :created, location: @mailforsubscriber } 

    else 
    format.html { render :new } 
    format.json { render json: @mailforsubscriber.errors, status: :unprocessable_entity } 
    end 
end 

이것은

class RecipientMailer < ApplicationMailer 
    require 'digest/sha2' 
    default from: "[email protected]" 
    default to: Proc.new {Subscribeduser.pluck(:email) } 
    default "Message-ID" => "#{Digest::SHA2.hexdigest(Time.now.to_i.to_s)}@domain.com" 


    def newsletter(mailforsubscriber) 
     @mailforsubscriber = mailforsubscriber 
     mail(subject: "Newsletter") 
    end 

end 

가 어떻게이 문제를 해결합니까받는 메일러 코드?

가 내가 메소드 send_mail_persons라고하고 parameter.This 논리로받는 사람의 정보를 통과 한

다음
def newsletter(mailforsubscriber) 
    @mailforsubscriber = mailforsubscriber 
    mail(:to => @mailforsubscriber.email, :subject => "Newsletter") 
end 

답변

1

당신은 당신의 행동 우편물이 같은 것을 사용할 수는 모든 이메일 ID를 통해 당신에게 루프를 만들 것입니다 및 그런 다음 개별적으로 보냅니다. 당신이 한 번에 모든 사용자에게 메일을 보내려면 다음 사용할 수 있습니다 : 당신이 레일을 처음 사용하는 경우 숨은

mail(:to => "@mailforsubscriber.email" , :subject => "Example Subject", 
:bcc => ["[email protected]", "[email protected]"]) 

말, 나는이 Action Mailer Basics를 읽어 제안합니다. 여기에는 컨트롤러에서보기까지 기본적인 우편물 템플릿 통합의 끝에서 끝까지의 흐름이 포함됩니다.

+0

이메일 주소를 직접 입력하지 않고도 많은 사람들에게 보내려고합니다. "mailforsubscriber.email"비트는 구독자의 메일에 전자 메일 주소가 있음을 의미합니다. 그렇지 않습니다. 모델에 가입 한 사용자와 가입 한 사용자 간의 메일은 본질적으로 관계가 없습니다. –

+0

"많은 사람들에게 보내려고합니다."- 제안 된 솔루션의 숨은 참조 비트가 내 애플리케이션에 적합하지 않음을 의미합니다. 이전 의견에서 충분히 명확하지 않은 경우 –

+0

변수에 저장된 이메일 ID 배열을 조치 메일러로 전달할 수 있습니다. 한 번의 호출로 여러 사용자에게 보내려면 다음을 사용하십시오. to => [배열 수]. 이렇게하면 모든 메일 ID가 다른 메일에도 노출됩니다. – Bijendra

1

CCO 필드를 사용해보세요. CC 필드와 유사하지만 모든 이메일을 표시하지는 마십시오.

관련 문제