2010-07-27 66 views

回答

0

我發現這個網站:http://dummysmtp.com/

我的服務器運行的是qmail的,所以我編輯的/ var/qmail的/控制/ smtproutes的,像這樣的內容:

:smtp.dummysmtp.com 用戶名密碼

當我用PHP郵件()發送一封簡單的郵件時,它工作正常,但後來我發現郵件仍然發送給其他人。我不得不爬進代碼的深處,發現這個:

/* Choose the mailer */ 
switch($this->Mailer) { 
    case 'sendmail': 
    $result = $this->SendmailSend($header, $body); 
    break; 
    case 'smtp': 
    $result = $this->SmtpSend($header, $body); 
    break; 
    case 'mail': 
    $result = $this->MailSend($header, $body); 
    break; 
    default: 
    $result = $this->MailSend($header, $body); 
    break; 
    //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported')); 
    //$result = false; 
    //break; 
} 

所以我必須確保每個選項被配置爲將其郵件發送到dummysmtp.com。一旦我明白了,一切都奏效了。

2

與其配置PHP,一般的解決方案是站起來一個虛擬的SMTP服務器。

請參閱this question

+0

謝謝。我已經看過那個線程。所有的解決方案要麼是Windows,要麼是Java服務器。我在Linux上,我的MTA是qmail。我確實找到了更好的解決方案,現在我正在測試它。如果有效,我會針對我自己的問題發佈回覆。 – 2010-07-27 18:27:18

+0

-1在我看來,這是一個可怕的想法。 – Fosco 2010-07-27 18:38:02

+0

@Fosco,你能證明爲什麼這是一個可怕的想法嗎? @我認爲,建議使用Java運行的SMTP服務器,而不是您的應用程序。 – Dolph 2010-07-27 19:53:50

0

所以你已經寫了應用程序,它使用實時電子郵件地址,現在你想測試它?您是否使用郵件集中功能,或者是否有大量的郵件()調用代碼?對不起,但你將不得不改變每一個mail()調用。幫你自己一個忙,用你自己的功能替換它們,然後在那個地方處理測試/實時功能。

+0

對不起。我沒有寫應用程序。我有一個數據庫的副本,我嘗試將所有電子郵件地址更改爲我自己的,但數據庫未正常化,並且仍有很多表格帶有我尚未找到的實時電子郵件地址。 – 2010-07-27 18:28:17

+0

我建議你改變發送電子郵件的功能,而不是數據庫。電子郵件地址在mail()函數中用作參數,您可以用自己的替換它。 – Fosco 2010-07-27 18:36:36

+0

- ;建議OP硬編碼配置數據?恥辱。 – Dolph 2010-07-27 19:57:25

0

您可以將運行PHP的服務器上的所有端口25通信重定向到將所有郵件發送給您的郵件服務器/端口。

這是我知道的唯一的100%萬無一失的方法。

+0

你指的是iptables嗎?這很有趣,但我認爲我找到了一個更優雅的解決方案,至少現在是這樣。 – 2010-07-27 18:37:56

+0

@Isiden是的,使用iptables你可以這樣做:-)。我很高興你有一個解決方案,不管它是什麼。 – Borealid 2010-07-27 18:40:09

+0

嗯,不完全。我發現郵件仍然出來給其他人。我試圖 須藤/ sbin目錄/ iptables的NAT -t輸出-A -m TCP --dport 25 -j DNAT --to目的地65.19.154.62 但得到 iptables的:未知的錯誤4294967295 的IP地址是到smtp.dummysmtp.com – 2010-07-27 22:07:08

0

您可以創建一個Google Apps帳戶(或使用虛擬服務器),創建一個全部收集的電子郵件帳戶並將其發送到域。你所要做的就是看看全部賬戶。

+0

謝謝。這聽起來與我在下面描述的當我找到解決方案時類似。 如何創建虛擬服務器? – 2010-07-27 18:43:50

相關問題