从“收件人:”发送电子邮件到地址替代

时间:2012-09-19 05:06:14

标签: email ruby-on-rails-3.2 actionmailer

我在Rails中实现了一种动态邮件列表系统。我希望基本上发送一封电子邮件,并让收件人以这种形式收到:

From: person@whosentthis.com
To: mailing-list@mysite.com

<body>

基本上,挑战是如何在定义不同的To:标题时向地址发送电子邮件,以便他们可以轻松回复邮件列表或只是原始发件人?

2 个答案:

答案 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,但后者将显示在邮件客户端的收件人字段中。

在Rails中指定Envelope_to字段

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的组合使用,为你提供你想要的东西。