直接使用郵件服務(wù)器發(fā)送,也就是php程序所在服務(wù)器上本來就是郵件服務(wù)器(即配置成SMTP郵件服務(wù)器),并且發(fā)送到的對方也必須是郵件服務(wù)器,比如QQ郵箱,163郵箱等等,他們直接也是使用SMTP協(xié)議
php程序拜托其他郵件服務(wù)器發(fā)送郵件(必須條件:該服務(wù)器可以上網(wǎng)),比如:使用zend提供的Zend_Mail插件發(fā)送郵件。
首先,拜托其他郵件服務(wù)器發(fā)送郵件,得有1系列的參數(shù)設(shè)置:比如:你得先在該郵件服務(wù)器上注冊有郵箱,所以配置郵箱登陸名和密碼是必須的,還有發(fā)送的主題,內(nèi)容,接收者等等。
詳細(xì)見代碼:
<?php require_once 'Zend/Mail.php'; require_once 'Zend/Mail/Transport/Smtp.php';
class sendMail { private static $_config =array( 'auth' => 'login', 'username' => 'xxxxx@163.com', 'password' => 'xxxxx' ); // 定義SMTP的驗(yàn)證參數(shù),設(shè)置正確的郵箱和登錄密碼
private static $_mail =null;
private static $_transport =null;
public static function send($title, $body, $address) { try { $transport = new Zend_Mail_Transport_Smtp('smtp.163.com',self::$_config);//實(shí)例化驗(yàn)證的對象 $mail = new Zend_Mail('UTF⑻'); // 實(shí)例化發(fā)送郵件對象 $mail->setBodyHtml($body); // 發(fā)送郵件的主體 $mail->setFrom('xxxx@163.com','');// 定義郵件發(fā)送使用的郵箱 $mail->addTo("$address",'');// 定義郵件的接收郵箱 $mail->setSubject($title); // 定義郵件主題 $mail->send($transport); // 履行發(fā)送操作 return true; } catch (Exception $e) { $e->getTrace(); return false; } } } |
代碼關(guān)鍵部份已加有注釋,就羅嗦了,有問題直接問我。
在需要郵件發(fā)送的時候,實(shí)例化sendMail類,然后調(diào)用該類的send方法傳入相應(yīng)參數(shù)便可。
詳細(xì)見代碼:
$title="測試"; $body='<h1>這是1封來自MarkTao的測試PHP郵件發(fā)送郵件!</h1><a href="#">請確認(rèn)</a>'; $address = 'xxxx@qq.com'; $sendMail = newsendMail(); $sendMail->send($title, $body, $address); |
title 為郵件的主題(標(biāo)題)
body為郵件內(nèi)容,支持html格式。
address 接收郵件的地址
sendMail中的config,其實(shí)像這類配置參數(shù)之類的,最好還是可以配置到配置文件中去,然后讀取,這樣拓展性就更強(qiáng)1些了。
還有1種方式是通過PHPMailer,這個就不是使用zend內(nèi)部的mail類了,需要去下載1些類包,然后引入使用。