利用郵件服務商的IMAP/TP服務,這里我們用163郵箱在說明一下,實現發送郵件功能的流程
1.登入163郵箱在設置里開啟IMAP/TP服務
2.在客戶端授權密碼設置授權密碼(需要手機驗證),POP3/IMAP/TP/Exchange/CardD/CalD服務。
3.確認php.ini中;extension=php_openssl.dll是否開啟,沒有則添加extension=php_openssl.dll。
4.選擇php自帶函數mail()或者PHPMaile第三方的類進行發送郵件,下面介紹第一種自帶mail()
一:
/*需要添加一個發送郵件的代理在config配置文件中*/
'MAIL_ADDRESS'='****@16
3.com',//初始化郵箱地址
'MAIL_TP'='smtp.16
3.com',//初始化郵箱TP服務器
'MAIL_LOGINNAME'='****@16
3.com',//初始化郵箱登錄帳號
'MAIL_PASSWORD'='****',//初始化郵箱密碼
'MAIL_CHARSET'='UTF-8',//編碼
'MAIL_AUTH'=true,//郵箱認證
'MAIL_HTML'=true,//trueHTML格式falseTXT格式
/*以下是控制器中的使用*/
import('Org.Util.Mail');//導入郵件類
$sendTitle=郵件標題;//郵件標題
$sendData=郵件內容,可以使用html代碼;//發送內容
$toMail=xxxxx@16
3.com;//收件人
$theme=留言反饋郵件;//郵件主題
SendMail($toMail,$sendTitle,$sendData,$theme);
二、
*phpemail郵件發送服務類,下載的phpmail把src時的文件放入指定文件夾,同時修改去除PHPMailer.php和TP.php時的命名空間即可
*庫下載地址:https://github.com/PHPMailer/PHPMailer
這是封裝的一個類
classSendemailService{
function__construct(){
$config=array(
'MAIL_CHARSET'='UTF-8',
'MAIL_TPAUTH'=true,//是否使用身份驗證
'MAIL_ISHTML'=true,//是否使用html
'MAIL_USERNAME'='',//發件地址
'MAIL_TPHOST'='',//smtp地址
'MAIL_PASSWORD'='',//發件地址密碼
'MAIL_TPSECURE'='',//使用ssl協議方式,ssl協議方式端口號是465/994
'MAIL_PORT'='25',//端口
'MAIL_GET_ADDRESS'='',//默認單一收件箱
);
$this-mailconfig=$config;
}
/**
*發送郵件
*@param$get_email
*@param$dataarray('title'='','detail'='')
*@returnbool
*/
publicfunctionsendEmail($data,$get_email=''){
vendor('PHPMailer.PHPMailer');
vendor('PHPMailer.TP');
$mail=new\PHPMailer();
$mail=$this-setBaseConfig($mail,$data,$get_email);
if(!$mail-send()){
returnMailerError:.$mail-ErrorInfo;//返回錯誤信息
}else{
return0;//為0表示發送成功
}
}
/**
*郵件基本設置
*@param$mail
*@param$data
*@paramstring$get_email
*@returnmixed
*/
publicfunctionsetBaseConfig($mail,$data,$get_email=''){
$config=$this-mailconfig;
$get_email=$get_email?$get_email:$config['MAIL_GET_ADDRESS'];
$mail-isTP();//使用TP服務
$mail-CharSet=utf8;//編碼格式為utf8,不設置編碼的話,中文會出現亂碼
$mail-Host=$config['MAIL_TPHOST'];//發送方的TP服務器地址
$mail-TPAuth=$config['MAIL_TPAUTH'];//是否使用身份驗證
$mail-Username=$config['MAIL_USERNAME'];//發送方的163郵箱用戶名
$mail-Password=$config['MAIL_PASSWORD'];//發送方的郵箱密碼,注意用163郵箱這里填寫的是客戶端授權密碼而不是郵箱的登錄密碼!
$mail-TPSecure=$config['MAIL_TPSECURE'];//使用ssl協議方式
$mail-Port=$config['MAIL_PORT'];//163郵箱的ssl協議方式端口號是465/994
$mail-IsHTML($config['MAIL_ISHTML']);//支持html格式內容
$mail-setFrom($config['MAIL_USERNAME'],'');//設置發件人信息,如郵件格式說明中的發件人,這里會顯示為Mailer(xxxx@16
3.com),Mailer是當做名字顯示
$mail-addAddress($get_email,'');//設置收件人信息,如郵件格式說明中的收件人,這里會顯示為Liang(yyyy@16
3.com)
//$mail-addReplyTo(,王);//設置回復人信息,指的是收件人收到郵件后,如果要回復,回復郵件將發送到的郵箱地址
//$mail-addCC(920348356@qq.com);//設置郵件抄送人,可以只寫地址,上述的設置也可以只寫地址
//$mail-addBCC();//設置秘密抄送人
//$mail-addAttachment(bug0.jpg);//添加附件
$mail-Subject=$data['title'];//郵件標題
$mail-Body=$data['detail'];//郵件正文
//$mail-AltBody=Thisistheplaintext純文本;//這個是設置純文本方式顯示的正文內容,如果不支持Html方式,就會用到這個,基本無用
return$mail;
}
}
調用方法
$mail=new\Fwadmin\Service\SendemailService();
$send['title']=$title;
$send['detail']=$content;
$flag=$mail-sendEmail($send,$email);