Я пытаюсь реализовать функцию, которая позволяет пользователю отправлять одно электронное письмо нескольким получателям. Я разделяю параметры recipient email
, вызывая метод .split
, который превращает их в массив. Затем я перебираю массив с помощью метода each, который должен применять метод mail к каждому элементу массива. Код контроллера и почтовой программы приведен ниже.
код контроллера
def create
@scoreboard = Scoreboard.find(params[:scoreboard_id])
@invitation = @scoreboard.sent_invitations.build(invitation_params)
if @invitation.save
UserMailer.registered_invitation_email(@scoreboard, @invitation).deliver_now
flash[:success] = "Invitation sent successfully"
redirect_to new_scoreboard_invitation_path
else
render 'new'
end
end
end
код почтовой программы
def registered_invitation_email(scoreboard, invitation)
@scoreboard = scoreboard
@invitation = invitation
split_email = @invitation.recipient_email.split
split_email.each do |email|
mail(to: email, subject: "View scoreboard")
end
end
Проблема в том, что он отправляет электронное письмо только последнему элементу массива. Например, если пользователь введет "[email protected] [email protected]"
в форму, электронное письмо будет отправлено только последнему элементу массива. В данном случае [email protected]
. Я не уверен, почему это так. Я думаю, что я перебираю его правильно. Я не уверен, что вызывает проблему. Я не уверен, что это цикл или, возможно, циклы не работают в активной почтовой программе. Не совсем уверен. Любая помощь будет оценена по достоинству. Спасибо!!
sleep 1
после отправки письма. посмотрите, работает ли это. - person Harry Bomrah   schedule 25.11.2015split_email
в качестве значения дляto:
? Если причина в том, что каждое электронное письмо должно идти к одному получателю отдельно, вы должны вызывать почтовую программу в контроллере для каждого получателя. - person Mareq   schedule 25.11.2015