2012-06-23 59 views
1

我一直在嘗試使用pear和php腳本發送郵件。我已經搜索了一整天,但還沒有找到我的問題。當我在網站上運行這段代碼時,什麼也沒有發生。它快速加載然後停止。我跑了一些回聲命令,並且我發現代碼特別停在:使用php腳本的梨郵件只是停止

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

就是這樣。沒有其他事情發生我沒有得到任何錯誤輸入或任何東西,我只是看到我的回聲發生在此之前,沒有回聲後。我已經安裝了梨,還有梨郵件。我'認爲'我正確地安裝了它們,因爲我可以在任何地方將「pear」輸入到命令行中,它會顯示菜單。我通過我的路由器和防火牆打開了端口465,tcp。我在一臺Windows XP機器上。我不知道錯誤日誌會在哪裏查看是否有不良現象發生。我的服務器是apache 2.2,託管在這個窗口框中。

<?php 

require_once "Mail.php"; 

$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "Hi!"; 
$body = "Hi,\n\nHow are you?"; 

$server = "ssl://smtp.gmail.com"; 
$username = "[email protected]"; 
$password = "pass"; 

$headers = array (
    "From" => $from, 
    "To" => $to, 
    "Subject" => $subject); 
$smtp = Mail::factory("smtp", 
    array ("host" => $server, 
     "port" => 465, 
     "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>"); 
    } 
?> 

回答

0

您不需要端口轉發,因爲連接是出站的。可能您的ISP阻止了連接。出站端口25上常見,465上沒有那麼多,但它發生了。
無論如何,你的代碼看起來很好。

+0

我在想事情,並且我的php.ini文件中的[郵件功能]會對此產生什麼影響?最初我設置了通過att出站smtp服務器,因爲我試圖通過我的isp來發送郵件。順便說一句,有沒有人知道att阻止端口465?我的郵件功能。 [郵件功能] ;僅適用於Win32。 SMTP = ssl://smtp.gmail.com smtp_port = 465 ;僅適用於Win32。 sendmail_from = [email protected] – user1477103

+0

我不認爲php.ini會與此有任何關係,不。打開命令提示符時會發生什麼情況,運行「telnet smtp.gmail.com 465」?它會變成空白,並給你一個閃爍的光標,或者你永遠會「連接到...」嗎? – dogglebones

+0

它變成空白,並給我一個遊標。 – user1477103

1

加塔愛如何解決這些問題可能需要10個小時的工作,如此簡單。

所以當我配置PEAR時,我做得正確。我安裝了包郵件,mail_mime和net_socket。我嘗試來安裝net_smtp,但它給了我隨機錯誤「沒有發佈可用於包梨...」。我認爲這意味着該軟件包已安裝,我無法做任何其他事情。我不知道這東西究竟是如何被竊聽的,但是在我的「C:\ Documents and Settings \ user \ Local Settings \ Temp」文件夾中生成了一個pear文件夾。我刪除了這個名爲pear的文件夾,然後成功運行'pear install net_smtp'。之後,我運行了我的php代碼,一切都像魅力一樣(能夠通過gmail smtp服務器成功發送我的電子郵件)。

感謝您的幫助,我非常欣慰地想出了這件事! :)