2012-01-14 53 views
-1

我試圖用PHP mail()函數發送郵件。我已經安裝了postfix,修改了Ubuntu help docs建議的所有必需文件。用PHP發送郵件

我還更改了我的php.ini文件,將sendmail_path的路徑設置爲sendmail_path = "/usr/sbin/sendmail -t -i",但仍無法將郵件發送到我的hotmail帳戶或yahoo或gmail。
編輯: 停止投票給我;即使我不知道我的問題。我到目前爲止所意識到的是,我的ISP阻止除80以外的每個端口。如果有人能幫助我緩解這個問題,那將是我的榮幸。

+0

請更具體。當您嘗試將郵件發送到您的Yahoo或GMail帳戶時,您是否收到錯誤消息?你有反彈嗎?你的郵件日誌裏有什麼東西嗎?傑夫親自出現在你家門口並大喊「不!」? – derobert 2012-01-15 07:55:55

+0

嗯,我在Virtual Box上使用Ubuntu - 10.04;我使用PHP郵件()調用的郵件功能似乎工作正常。但是,我沒有收到我的收件箱中的任何電子郵件。對我而言,「似乎」在我的主機中,即在Windows 7中的SMTP端口以某種方式被阻止,這可能會阻止我的郵件傳遞到Hotmail服務器。現在你認爲我在朝着正確的方向思考嗎? – 2012-01-15 15:32:58

+0

您是否在住宅互聯網連接上運行此操作?很可能你的ISP已經阻止了除了郵件服務器以外的其他所有東西。 'telnet gmail-smtp-in.l.google.com 25'(來自'cmd'提示符)連接並給你一個'220 mx.google.com ESMTP ...'橫幅嗎?您需要通過ISP的郵件服務器將您的MTA配置爲smarthost。 – derobert 2012-01-15 18:35:42

回答

2

當你配置Postfix的時候,你不需要sendmail這也是一個像Postfix這樣的MTA。 因此sendmail_path = "/usr/sbin/sendmail -t -i"不被php使用。

您必須通過php連接到您的Postfix服務器(它正在監聽localhost:25)以發送郵件。

這裏是基於this answer修改的示例,

<?php 

    require_once "Mail.php"; 

    $from = "<from.gmail.com>"; 
    $to = "<to.yahoo.com>"; 
    $subject = "Hi!"; 
    $body = "Hi,\n\nHow are you?"; 

    $host = "localhost"; 
    $port = "25"; 
    $username = "<myaccount.gmail.com>"; 
    $password = "password"; 

    $headers = array ('From' => $from, 
     'To' => $to, 
     'Subject' => $subject); 
    $smtp = Mail::factory('smtp', 
     array ('host' => $host, 
     'port' => $port, 
     'auth' => true, 
     'username' => $username, 
     'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 

    if (PEAR::isError($mail)) { 
     echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo("<p>Message successfully sent!</p>"); 
    } 

?> 

注意Mail是一個梨包。

+0

感謝您的回答,隊友。我手邊有一個新問題。我不知何故無法在Windows 7上打開我的端口25。我在Windows防火牆的入站規則中添加了例外情況,即使當我在端口25上telnet到本地主機時,它也會導致連接錯誤。你遇到過這個問題嗎? http://www.canyouseeme.org/:我已經在本網站上使用了該工具來查看我的端口25是否打開,它表示只有端口80打開。順便說一句,我用這個詞來描述從這個網站打開25號港口:http://www.wikihow.com/Open-Port-25。任何幫助開放25港口將不勝感激。 – 2012-01-15 17:11:35

+0

@FewTem您已在Ubuntu上配置Postfix。你爲什麼試圖從Windows連接它?它在你Ubuntu的傢伙。 – 2012-01-15 17:46:48

+0

我以爲Ubuntu使用與我的Windows主機相同的端口,那就是爲什麼;無論如何謝謝你的擡頭。 – 2012-01-15 18:30:15