2012-07-07 234 views
0

Send email using the GMail SMTP server from a PHP pagePHP發送電子郵件PEAR失敗

我試圖讓這個工作。根據給定鏈接中的答案「這是工作代碼,所以使用它」。除了它不適合我。

特別是:

<?php 

     require_once "Mail.php"; 

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

     $host = "smtp.gmail.com"; 
     $port = "465"; 
     $username = "[email protected]"; 
     $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>"); 
     } 

    ?> <!-- end of php tag--> 

產地:

嚴格的標準:非靜態方法的Mail ::廠()不應該 F中靜態調用:\ XAMPP \ htdocs中\測試\ index.php on line 23

嚴格標準:非靜態方法PEAR :: isError()不應該是 靜態調用,假設$ this來自不兼容的上下文 F:\ XAMPP \ PHP \ PEAR \在線郵件\ smtp.php 365個

嚴格的標準:非靜態方法PEAR :: ISERROR()不應該被 靜態調用,在不兼容的情況下假設$這 F:\ XAMPP \ PHP \ PEAR \ NET \ SMTP.php上線450個

嚴格的標準:非靜態方法PEAR :: ISERROR()不應該被 靜態調用,在 假設$這種在不兼容的情況下˚F :\ xampp \ php \ PEAR \ Net \ SMTP.php在線467

雖然phpinfo()給出了已註冊的套接字:

TCP,UDP,SSL,SSLV3,SSLV2,TLS

但最重要的,沒有電子郵件發送。

回答

0

嘗試設置正確的電子郵件地址在$from$to

'[email protected]' instead of '<PeterMorgan.gmail.com>' 

梨郵件文檔:

include('Mail.php'); 

$recipients = '[email protected]'; 

$headers['From'] = '[email protected]'; 
$headers['To']  = '[email protected]'; 
$headers['Subject'] = 'Test message'; 

$body = 'Test message'; 

$params = ... // set smtp values here 
       // http://pear.php.net/manual/en/package.mail.mail.factory.php 

$mail_object =& Mail::factory('smtp', $params); 

$mail_object->send($recipients, $headers, $body); 
+0

我試過了。似乎沒有工作。在顯示'strict'消息之前,它需要等待大約25秒才能加載。它沒有說連接失敗或被拒絕......它只是不發送.. :( – Bingo 2012-07-08 10:43:59

0

想通了這個問題。對於Gmail他們說,在他們的網站:

端口爲TLS/STARTTLS:587

SSL的端口:465

如果您無法順利寄送郵件,但您已確認 加密對於郵件客戶端中的SMTP有效,請嘗試在不同的端口(465或587)上配置您的SMTP服務器 。

因此,我將端口從465更改爲587,即使我正在使用SSL。我不知道爲什麼這對我有用,但確實如此。