簡體   English   中英

使用Gmail SMTP通過PHP發送電子郵件

[英]Using Gmail SMTP to send email with PHP

我有一個問題,我已經工作了大約一個星期,但無法找到答案。 作為這一切的序言,我在互聯網上搜索了各種各樣的東西。 這個問題有很多答案,但似乎都沒有幫助我。

我對PHP有點新,還有很多我要求的東西(過去幾個月一直在使用它)。 讓我來看問題的基礎:

我在學校網絡上,我的宿舍里有我自己的服務器。 我正在創建一個網站,我需要驗證用戶的電子郵件,但基本的PHP mail()函數不起作用。 我被告知我需要使用SMTP。 所以我決定使用Gmail SMTP最簡單,最便宜的方式。 因此,我在Gmail上創建了一個名為verify.impressions@gmail.com的帳戶。 這是代碼。

echo "starting mail sending";
             require_once("pear/share/pear/Mail.php");

echo "1";

$from = "PersonA `<someone@gmail.com`>";   $to = "`<someoneElse@email.com`>";   $subject = "Activate your account";   $body = "Hey";  

$host = "ssl://smtp.gmail.com";   $port = "465"; //also tried 587   $username = "someone@gmail.com";   $password = "password";  

echo "2";

$headers = array ('From' => $from,    'To' => $to,    'Subject' => $subject);

echo "3";

$mailer_params['host'] = $host;   $mailer_params['port'] = $port;   $mailer_params['auth'] = true;   $mailer_params['username'] = $username;   $mailer_params['password'] = $password;                                              
                 $smtp = Mail::factory('smtp', $mailer_params);

echo "4";

error_reporting(E_ALL);

echo "5";

if (PEAR::isError($smtp)) {   die("Error : " . $smtp->getMessage()); }

echo "6";

$mail = $smtp->send($to, $headers, $body) or die("Something bad happened"); 

echo "7";

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

所以基本上代碼就停在了這一行:

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

我嘗試過打印錯誤,但我現在不知道該怎么辦。 任何提示和幫助表示贊賞。 謝謝!!

使用此類: http//www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html

我使用的示例代碼:

require("smtp/smtp.php");
require("sasl/sasl.php");
$from = 'youraddress@gmail.com';
$to = 'some@email.com';

$smtp=new smtp_class;
$smtp->host_name="smtp.gmail.com";
$smtp->host_port='465';
$smtp->user='youraddress@gmail.com';
$smtp->password='XXXXXXXXX';
$smtp->ssl=1;
$smtp->debug=1;       //0 here in production
$smtp->html_debug=1; //same

$smtp->SendMessage($from,array($to),array(
"From: $from",
"To: $to",
"Subject: Testing Manuel Lemos' SMTP class",
"Date: ".strftime("%a, %d %b %Y %H:%M:%S %Z")
),
"Hello $to,\n\nIt is just to let you know that your SMTP class is working just fine.\n\nBye.\n"));

如果您使用的是Linux,我建議您在本地計算機上設置postfix,並要求您通過外部SMTP服務轉發電子郵件。

http://bookmarks.honewatson.com/2008/04/20/postfix-gmail-smtp-relay/

原因是您的PHP腳本可以超時,因為有聯系Gmail的延遲。 因此,您將使用Postfix在本地服務器上排隊電子郵件,讓PHP腳本執行死亡並信任Postfix通過Gmail發送電子郵件。

如果您使用的是Windows,我相信您可以找到一個等效的SMTP中繼應用程序(應該構建為粗略猜測)。

許多公共網絡阻止SMTP端口上的連接到遠程計算機,以阻止其網絡中的垃圾郵件發送者。

你有兩個選擇:

  1. 找到使用不同於25的端口的smtp服務器
  2. 使用學校網絡的官方SMTP服務器。 人們總是需要發送郵件。

我總是使用來使用gmail作為SMTP服務器發送郵件。
配置非常簡單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM