레일스에 익숙하지 않고 일반적으로 개발에 익숙해 졌기 때문에 이것이 기본적인 질문이라면 사과드립니다. 옵트 인 사용자에게 대량 이메일 (예 : 뉴스 레터)을 보내려는 앱이 있습니다. 나는 두 가지의 염려가있다 : (1) 내 코드는 대량 메일을 처리하는 가장 효율적인 방법이다 (즉 for ... each 문을 사용해야 할 필요가있다). (2) Stack Overflow에서 중요성에 대해 말하는 다른 게시물을 읽는다. 지연된 작업을 사용하여 전자 메일을 보냅니다.레일즈 3 매스 이메일
다른 일들이 참고 : 나는에게 Heroku에있어
내 질문에 따라 나는 지연 추가 된 SendGrid
- 대부분의 p eople는 단일 수신자 이메일 (즉, 사용자 등록 확인)에 대해서도 지연된 작업을 사용합니까?
- 제 코드는 대량 이메일을 보내는 가장 효율적인 방법입니까?
- 예를 들어 1000 명의 사용자가있는 경우 모든 사람에게 BCC와 동일한 이메일을 보내는 경우 리소스 (예 : 대역폭, CPU 등)에 큰 차이가 있는지 확인합니다. 그렇다면 메일러에 해시를 전달 (for ... each를 삭제하고 opt_in_user 매개 변수를 @opt_in_users로 변경)하고 수신자를 숨은 참조로 변경 하시겠습니까?
고마워요!
컨트롤러
commmunity_users = UserCommunityRelation.find('community_id = ? and status = ?,' current_community, "approved")
@opt_in_users = User.find('opt_in = ?,' true)
@opt_in_users.each do |opt_in_user|
UserMailer.send_later(:deliver_announcement, opt_in_user)
end
UserMailer.rb 보내는 대량 들어
def announcement(opt_in_user)
mail(:to => "#{opt_in_user.username} <#{opt_in_user.email}>", :subject => "Huge Announcement!")
end
일회용 이메일의 경우에도 여전히 SendGrid를 사용합니다. 더 나은 전달, 주로 2 차적으로 분석. –
또한 가능한 경우 외부 서비스와 상호 작용하고 처리하는 데 걸리는 시간을 모르기 때문에 지연된 작업을 사용하려고합니다. 백그라운드에서 처리하고 사용자에게 제어권을 돌려 보냅니다. –