2

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

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

<body>

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

4

2 回答 2

6

邮件与信封

在电子邮件和物理邮件中一样(纸信封中的纸张),信封上的收件人可能与信纸上的收件人不同。

由于邮递员只会考虑信封的收件人,所以邮件服务器也是如此。

这意味着,实际上可以告诉 smtp 服务向与To:电子邮件标头字段中列出的收件人不同的收件人发送电子邮件。

手动尝试

您可以手动尝试一下,例如使用sendmailpostfix 命令。

# 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使用邮件 gem。目前,2013 年 4 月,有一个拉取请求,允许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

文档

于 2013-04-06T13:35:10.647 回答
0

为什么不为此使用密件抄送标头?放入person@whoshouldreceivethis.com密件抄送和mailing-list@mysite.com收件人。

澄清:

对此没有技术解决方案。电子邮件标题做他们所做的事情,一旦电子邮件在路上,你就无法影响他们。

不过,我敢肯定,您可以找到 TO、CC、BCC 和 REPLY-TO 的组合使用,从而满足您的需求。

于 2012-09-19T05:41:57.647 回答