我在Rails中实现了一种动态邮件列表系统。我希望基本上发送一封电子邮件,并让收件人以这种形式收到:
From: person@whosentthis.com
To: mailing-list@mysite.com
<body>
基本上,挑战是如何在定义不同的To:
标题时向地址发送电子邮件,以便他们可以轻松回复邮件列表或只是原始发件人?
答案 0 :(得分:6)
在电子邮件中,如实体邮件(纸质信封中的纸张),信封上的收件人可能与信件表本身的收件人不同。
由于邮递员只会考虑信封的收件人,邮件服务器也是如此。
这意味着,实际上可以告诉smtp服务发送并通过电子邮件发送给不同于电子邮件标题的To:
字段中列出的收件人的收件人。
您可以手动尝试此操作,例如,使用postfix的sendmail
命令。
# 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月,有一个pull request,允许在投放前在邮件中指定envelope_to
字段。
在此之前,您可以在Gemfile
。
# Gemfile
# ...
gem 'mail', git: 'git://github.com/jeremy/mail.git'
之后您需要运行bundle update mail
,并且,根据您当前的rails版本,也可能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
答案 1 :(得分:0)
为什么不使用BCC标头呢?将person@whoshouldreceivethis.com
放入BCC,将mailing-list@mysite.com
放入TO。
Clearification:
没有技术解决方案。电子邮件标题执行他们的操作,一旦电子邮件正在发送,您就无法对其进行影响。
我相信,你可以找到TO,CC,BCC和REPLY-TO的组合使用,为你提供你想要的东西。