繁体   English   中英

不要将 email 发送给收件人

[英]don't send email to to-recipient

问题:

是否可以向 CC/BCC 收件人看到的收件人发送 email?

换句话说:是否可以通过 CC 或 BCC 发送 email 但不能发送给收件人(即“收件人”header 字段中的收件人)?

例子:

Andrew 希望 Bob 在实际发送给 Alice 的情况下接收这些电子邮件中的任何一封:

from: Andrew
to: Alice

或者

from: Andrew
to: Alice
cc: Bob

那可能吗?


我不太了解主题,但从我的阅读来看,发件人(安德鲁)似乎必须为toenvelope-to字段使用不同的收件人,但我不知道如何实现。

发件人(安德鲁)是否不可避免地必须设置自己的邮件服务器来实现这一点,还是有更简单的解决方案?

To , From , CC甚至BCC只是 email 中的标题。 你可以放任何你想要的东西,至少如果你使用一个库来控制你的 email 中的标题。

让我们做一个非常简单的例子,使用 telnet 发送 email。

首先,查找哪些 email 服务器处理域的邮件(此处为 gmail.com),例如,使用host

robert@here:~$ host gmail.com
gmail.com has address 142.250.115.19
gmail.com has address 142.250.115.83
gmail.com has address 142.250.115.17
gmail.com has address 142.250.115.18
gmail.com has IPv6 address 2607:f8b0:4000:803::2005
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.

我将使用第一个给定的 email 服务器 gmail-smtp-in.l.google.com。 根据RFC 5321 ,您可以连接到邮件服务器并发送 email,如下所示:

robert@here:~$ telnet gmail-smtp-in.l.google.com 25
Trying 142.250.138.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP v9si1145647ooe.55 - gsmtp

以数字开头的每一行都是 SMTP 服务器的回复。 200s 中的代码是可以的,400 是临时错误,500 是永久错误。

接下来你说“你好”,或者更确切地说,“扩展你好”(ehlo)并且服务器回复它支持的所有扩展:

ehlo me
250-mx.google.com at your service, [1.2.3.4]
250-SIZE 157286400
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8

然后你告诉服务器你想发送一个 email,使用mail from:命令,并告诉它SMTP 信封发件人 email 地址 如果服务器接受 email,它会再次回复以 200s 代码开头的内容。

mail from: <me@example.org>
250 2.1.0 OK v9si1145647ooe.55 - gsmtp

然后你给SMTP 信封收件人,服务器再次接受 200s 代码:

rcpt to: <smtp-env@example.org>
250 2.1.5 OK v9si1145647ooe.55 - gsmtp

接下来是服务器使用 354 代码确认的data命令,告诉您输入消息:

data
354  Go ahead v9si1145647ooe.55 - gsmtp

email 由标题、空行和 email 的正文组成。 下面的示例非常简单,但应该可以工作。 您指定一个From: header、一个To: ,可能是一个CC:BCC: (sic,) 标题,当然还有一个Subject:Date:等。

From: me
To: you
CC: me again
Subject: test

Hello, this is a test.

在这里,您会看到 4 个标题( FromToCCSubject ),然后是分隔标题和 email 正文的空行,然后是正文,也就是那一行。

email 以一行上的单个点结束:

.
250 2.0.0 OK  1619472375 v9si1145647ooe.55 - gsmtp

服务器现在已经接受了消息,应该发送或退回它。 您现在可以发送另一个 email( mail from:重新开始)或结束对话:

quit
221 2.0.0 closing connection v9si1145647ooe.55 - gsmtp
Connection closed by foreign host.

如您所见,我输入smtp-env@example.org作为SMTP 信封收件人 email 地址。 这是最重要的,这是 email 实际发送的地方。 没有什么能阻止您在没有为他们指定rcpt-to:的情况下将人员添加到CC:BCC:行。 他们不会得到 email,但它会寻找真正得到 email 的收件人,这些人也应该收到它。 没有什么能阻止您在To: header 中添加与在rcpt-to:命令中使用的地址不同的 email 地址。

通常,MUA 将添加与 SMTP 信封地址匹配的To:CC: header,但这不是必需的。 但是,没有这些标头,或者标头与 SMTP 信封命令不匹配,可能会给您带来一些垃圾邮件点。

在许多情况下,您不需要用户名或密码 这是故意的。 例如,您是 gmail 用户,并且想在 yahoo.com 上向某人发送内容。 You will need your gmail user name and password to log in to your gmail account, but you don't need an account with yahoo.com to send email to someone with a yahoo.com account. 如果您需要登录您可能想要发送到的每个 email 服务器,那么您必须拥有大量的用户名和密码,这是 email 的优势,它是开放的,它是免费的。 每个人都可以运行服务器并发送和接收电子邮件。

Du kannst Dir die Welt machen, wie sie Dir gefällt。 ;-)

如果整个事情听起来很奇怪,请记住 email 是一个近 50 年历史的系统,多年来一直使用安全性、附件和非 ascii 字符,并且一直关注向后兼容性。 但是,如果您无法远程登录到其他 email 服务器,您将永远无法向任何人发送 email。 作为运行 email 服务器的人,您不能为全世界创建帐户以接收所有人的 email。

当您以编程方式执行此操作时,这取决于您使用的库。 大多数库将为标头设置默认值,并让您根据需要覆盖标头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM