利用smtp.163.com 傳送郵件(本地無需伺服器)
第一步:需要下載PHPMailer檔案包phpmailer-1.73.tar.gz 來自開源社群:
http://phpmailer.sourceforge.net/
第二步:確認你的伺服器系統已經支援socket 如下圖,通過phpinfo();檢視是否支援sockets
如果沒有這一項就請注意: socket 是屬於PHP擴充套件部分,編譯時必須給定一個用於./configure --enable-sockets 的配置選項。
第三步:把檔案解壓到你的web伺服器目錄下,呼叫類就可以了,說明:首先包含 class.phpmailer.php,然後建立物件,設定引數,呼叫成員函式。具體請見下面的示例程式碼:
php
/*******************************
*
*******************************/
set_time_limit(120);//
require("class.phpmailer.php");
function smtp_mail ( $sendto_email, $subject, $body, $extra_hdrs, $user_name) {
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "smtp.163.com"; // SMTP servers 注意:好像聽說是隻有2006年以前申請的163郵箱具有此功能
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "fuyongjie.100"; // SMTP username 注意:普通郵件認證不需要加 @域名
$mail->Password = "************"; // SMTP password(我把我的密碼給隱了)
$mail->From = "[email protected]"; // 發件人郵箱
$mail->FromName = "fuyongjie"; // 發件人
$mail->CharSet = "utf-8"; // 這裡指定字符集!
$mail->Encoding = "base64";
$mail->AddAddress($sendto_email,"yangli"); // 收件人郵箱和姓名
$mail->AddReplyTo("[email protected]","163.com");
//$mail->WordWrap = 50; // set word wrap
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
$mail->AddAttachment('stat.rar','更改後的名字.rar');
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
// 郵件主題
$mail->Subject = $subject;
// 郵件內容
$mail->Body = '
歡迎來到http://prdownloads.sourceforge.net/phpmailer/phpmailer-1.73.zip?download
下載phpmailer!
';
$mail->AltBody ="text/html";
if(!$mail->Send())
{
echo "郵件傳送有誤 ";
echo "郵件錯誤資訊: " . $mail->ErrorInfo;
exit;
}
else {
echo "$user_name 郵件傳送成功!163to qq";
}
}
// 引數說明(傳送到, 郵件主題, 郵件內容, 附加資訊, 使用者名稱)
smtp_mail('[email protected]', '從163發來的!', 'NULL', '163.com', 'fuyongjie');
?>
要注意的內容:
1. 郵件的字符集設定, $mail->CharSet = "GB2312"; // 這裡指定字符集!在這裡我只指定為GB2312因為這樣Outlook能正常顯示郵件主題,我嘗試過設為utf-8但在Outlook下顯示亂碼。
2. 如果是傳送html格式的郵件,那麼記得也指定
3. 如果你想用它來群發郵件的話,記得修改包含檔案函式,如:
require("phpmailer/class.phpmailer.php");
改為
require_once("phpmailer/class.phpmailer.php");
否則的話會產生類的重定義。