2015-11-02 33 views
0

我正在使用各種列表服務器,並使用PHP的mail()函數。我試圖找出一種方法讓收件人在收件人:字段中看到多個地址,而不需要PHP實際發送到這些地址。例如:PHP郵件() - 在「收件人」字段中顯示的地址比實際發送到的地址要多

所以我的問題是,我怎麼可以讓PHP的郵件功能,以實際發送只發送「[email protected]」和「[email protected]」,但不發送到「[email protected]」,同時仍在電子郵件的「收件人:」字段中顯示「[email protected]」約翰和瑪麗得到了什麼?

是否有某種頭我可以設置,將顯示「收件人:」字段中的地址,但實際上並沒有發送到該地址?

編輯:現有的代碼會是這樣的:

$to = "To: [email protected], [email protected]"; 
$from = "From: [email protected]"; 
$new_headers = $to."\r\n".$from."\r\n"."Bcc: [email protected], [email protected]"."\r\n"; 

mail("","Subject Here","message here", $new_headers); 

這工作,並適當地轉發給約翰和瑪麗,但「[email protected]」將收到的電子郵件的兩個副本(一個來自原始發件人和轉發副本中的一個)。

+0

親愛的約旦,你到目前爲止有哪些好的,新鮮的,有希望的代碼?否則它是在黑暗中戳... – Jan

+0

@Jan添加了一些我一直在使用的代碼 – Jordan

回答

0

據我所知,沒有辦法不是發送郵件給被列爲收件人的人,除非你使用類似Postfix的東西。

但是你應該能夠做到像改變/etc/mail/address.resolve文件,或者如果不工作,或者是不存在的,另一種選擇是,以改變實際/etc/hosts文件,以便它認爲example.org指向同IP地址爲localhost

::1  ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
127.0.0.1 localhost example.org 
+0

如果我想實際發送它到「[email protected]」,並且有「name2 @ example.com「顯示在」收件人:「字段中,但實際上沒有收到它?如果我編輯解析文件以將該域名與錯誤的地址鏈接起來,那麼即使是應該收到它的人也不會。 – Jordan

0

我想出了一個解決方案。我沒有使用PHP的mail()函數,而是使用exec()函數從命令行調用sendmail。使用sendmail,您可以指定不同於:和envelope-to:標頭。因此,代碼會是這個樣子:

$message = "To: [email protected], [email protected]\r\nFrom: [email protected]\r\nSubject: subject line\r\n\r\n message content here"; 

exec("/usr/bin/sendmail [email protected] [email protected] <<< ".escapeshellarg($message)); 

然後,它實際上只是被交付到「[email protected]」和「[email protected]」,但他們看起來它被送到「 [email protected]「和」[email protected]「。

相關問題