HPMailer 是一個專門用於php語言的郵件發送類,功能十分地強大,豐富了 PHP 本身單一的 mail() 函數。支援 SMTP 等、附件等。 PHPMailer 遵守 LGPL 授權,可以免費下載。
下載地址:http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/PHPMailer_v5.1.zip/download
使用方法(只說法郵件,其收郵件的功能飄過):
代碼如下 |
複製代碼 |
IsSMTP(); $mail->SMTPAuth = true; //smtp要求身分識別驗證 $mail->SMTPSecure = 'ssl'; //smtp驗證方式 $mail->Port = 465 ; //smtp連接埠號碼 $mail->Username = "username@gmail.com"; // 註冊了的gmail使用者郵箱(用你的gmail郵箱就可以) $mail->Password = "password"; //密碼 $mail->Host = 'smtp.gmail.com'; // 發郵件的伺服器 $mail->IsHTML(true); // 是否使支援 HTML 郵件的發送,預設為 false , $mail->From ='username@gmail.com'; // 發信人的郵箱,用你的gmail郵箱就可以 $mail->FromName = 'Mailer'; // 你的姓名 $mail->Subject = '郵件標題'; // 郵件標題 $mail->Body ='Hello world'; // 郵件內容,支援HTML代碼 $mail->AddAddress('name@anydomain.com', 'First Last'); // 收件者郵箱和姓名 if (!$mail->Send()) { echo $mail->ErrorInfo; }
|
本來一般是照上面的配置就可以通過指定的smtp伺服器發送郵件了,但是經個人測試上面的設定只能用163,126的smtp發送郵件,像qq,gmail等都發送不出去! 在google上搜了N久,終於找到了下面的方法可以成功通過gmail發送郵件了,當然還包括:qq、sina、sohu等(雅虎的不能通過,貌似雅虎預設smtp沒有開通,得開通他們的一個叫‘寄件提醒’功能才給你開通smtp/pop3)
下面是解決方案: 只需要在 class.phpmailer.php 中尋找到下面的代碼(可能由於下載的版本不同而稍微有點區別):
代碼如下 |
複製代碼 |
if(eregi(’^(.+):([0-9]+)$‘, $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[2]; } else { $host = $hosts[$index]; $port = $this->Port; }
|
更改為( 不任什麼版本都改成下面的內容):
代碼如下 |
複製代碼 |
if(eregi(’^#(([a-z]+://)?[^:]+):(d+)#i‘, $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[3]; } else { $host = $hosts[$index]; $port = $this->Port; }
|
幾經修改希望你也可以順利的通過gmail的smtp發送郵件了(當然要在win下面要能發郵件,還得在IIS中安裝smtp以及在php中有OpenSSL擴充的支援)。 最後經測試,這種修改後能順利通過 126163qqgmailsinasohu的smtp發送郵件