您好,登錄后才能下訂單哦!
PHP通過(guò)mail()或Socket發(fā)從郵件
php發(fā)送郵件是直接通過(guò)mail函數(shù)實(shí)現(xiàn)的,但是很多人在使用的時(shí)候發(fā)
送不成功,原因是因?yàn)橄鄳?yīng)的文件沒(méi)有配置完整,而且配置的過(guò)程比較
麻煩,兼容性很差。要配置的文件有:php.ini文件以及類(lèi)似sendmail這
樣的組件的支持。
另外一種發(fā)送郵件的方式是通過(guò)socket通訊,使用SMTP傳輸。通過(guò)使
用socket的方式發(fā)送郵件的兼容性比較強(qiáng),但是代碼量就會(huì)變得多了
一點(diǎn)。
用socket方式發(fā)送郵件的過(guò)程:
socket連接-->SMTP通訊-->獲取通訊信息-->發(fā)送
mail函數(shù)的使用
mail(to,subject,message,headers,parameters)
如果郵件的投遞被成功地接收,則返回true,否則返回false
各參數(shù)的含義:
to 必需。規(guī)定郵件的接收者。
subject 必需。規(guī)定郵件的主題。該參數(shù)不能包含任何換行字符。
message 必需。規(guī)定要發(fā)送的消息。
headers 可選。規(guī)定額外的報(bào)頭,比如 From, Cc 以及 Bcc。
parameters 可選。規(guī)定 sendmail 程序配置的額外參數(shù)。
注:如果要使用mail函數(shù),必須在php.ini文件配置成功和獲得
Sendmail的支持
socket方式發(fā)送原理
使用fsockopen函數(shù)打開(kāi)一個(gè)Internet連接
fsockopen(string hostname, int port, int [errno], string [errstr], int
[timeout]);
使用的是SMTP協(xié)議,所以端口號(hào)是25,連接成功后,會(huì)返回一個(gè)
socket句柄,使用它就可以像使用文件句柄一樣。
可以使用像其他文件句柄一樣,會(huì)返回一些值,下面是一些常見(jiàn)的返回
值:
220 服務(wù)就緒(在socket連接成功時(shí),會(huì)返回此信息)
221 正在處理
250 請(qǐng)求郵件動(dòng)作正確,
354 開(kāi)始發(fā)送數(shù)據(jù),結(jié)束以 .
500 語(yǔ)法錯(cuò)誤,命令不能識(shí)別
550 命令不能執(zhí)行,郵箱無(wú)效
552 中斷處理:用戶(hù)超出文件空間
例子:(socket)
<?php
require_once('pw.php');
require_once('email.class.php');
$smtpserver = "smtp.qq.com";
$smtpserverport = 25;
$smtpemail = "woai12346@qq.com";
$smtpemailto = "441508867@qq.com";
$smtpuser = "hhq";
$smtppass=$pw;
$mailsubject = "test";
$mailbody = "It is a test.";
$mailtype = "txt";
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);
$smtp->debug = true;
$smtp->sendmail($smtpemailto,$smtpemail,$mailsubject,$mailbody,$mailtype);
?>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。