簡體   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