Rails で一種の動的なメーリング リスト システムを実装しています。私は基本的に電子メールを送信し、受信者に次の形式で受信させたいと考えています。
From: person@whosentthis.com
To: mailing-list@mysite.com
<body>
To:
基本的に、課題は、メーリング リストまたは元の送信者だけに簡単に返信できるように、別のヘッダーを定義しながらメールをアドレスに送信するにはどうすればよいかということです。
Rails で一種の動的なメーリング リスト システムを実装しています。私は基本的に電子メールを送信し、受信者に次の形式で受信させたいと考えています。
From: person@whosentthis.com
To: mailing-list@mysite.com
<body>
To:
基本的に、課題は、メーリング リストまたは元の送信者だけに簡単に返信できるように、別のヘッダーを定義しながらメールをアドレスに送信するにはどうすればよいかということです。
物理的なメール (紙の封筒に紙のシート) のように電子メールでは、封筒の受信者はレターシート自体の受信者と異なる場合があります。
郵便配達員はエンベロープの受信者のみを考慮するため、メール サーバーも同様です。
つまり、実際にはTo:
、電子メール ヘッダーのフィールドにリストされている受信者とは異なる受信者に送信して電子メールを送信するように smtp サービスに指示できます。
sendmail
たとえば、 postfixのコマンドを使用して、手動でこれを試すことができます。
# bash
sendmail really_send_to_this_address@example.com < mail.txt
どこ
# mail.txt
From: foo@example.com
To: this_will_be_seen_in_the_to_field_in_email_clients@example.com
Subject: Testmail
This is a test mail.
really_send_to_this_address@example.com
これにより、電子メールはではなく に配信されますthis_will_be_seen_in_the_to_field_in_email_clients@example.com
が、後者はメール クライアントの受信者フィールドに表示されます。
はActionMailer::Base
内部でmail gemを使用します。現在、2013 年 4 月にはプル リクエストenvelope_to
があり、配信前にメッセージのフィールドを指定できます。
これが引っ張られるまでは、 でフォークを指定できますGemfile
。
# Gemfile
# ...
gem 'mail', git: 'git://github.com/jeremy/mail.git'
bundle update mail
その後、実行する必要があります。また、現在のレールのバージョンによっては、bundle update rails
依存関係の問題を解決するためにも実行する必要があります。
その後、次のようにメール メッセージのエンベロープ受信者を設定できます。
# rails
message # => <Mail::Message ...>
message.to = [ "this_will_be_seen_in_the_to_field_in_email_clients@example.com" ]
message.smtp_envelope_to = [ "really_send_to_this_address@example.com" ]
message.from = ...
message.subject = ...
message.body = ...
message.deliver
これにBCCヘッダーを使用しないのはなぜですか? BCCperson@whoshouldreceivethis.com
とmailing-list@mysite.com
TO に入れます。
明確化:
これに対する技術的な解決策はありません。電子メールのヘッダーはその役割を果たします。電子メールが送信されると、ヘッダーに影響を与えることはできません。
ただし、TO、CC、BCC、および REPLY-TO を組み合わせて使用すると、必要なものが得られると確信しています。