您好,登錄后才能下訂單哦!
PHP通過mail()或Socket發從郵件
php發送郵件是直接通過mail函數實現的,但是很多人在使用的時候發
送不成功,原因是因為相應的文件沒有配置完整,而且配置的過程比較
麻煩,兼容性很差。要配置的文件有:php.ini文件以及類似sendmail這
樣的組件的支持。
另外一種發送郵件的方式是通過socket通訊,使用SMTP傳輸。通過使
用socket的方式發送郵件的兼容性比較強,但是代碼量就會變得多了
一點。
用socket方式發送郵件的過程:
socket連接-->SMTP通訊-->獲取通訊信息-->發送
mail函數的使用
mail(to,subject,message,headers,parameters)
如果郵件的投遞被成功地接收,則返回true,否則返回false
各參數的含義:
to 必需。規定郵件的接收者。
subject 必需。規定郵件的主題。該參數不能包含任何換行字符。
message 必需。規定要發送的消息。
headers 可選。規定額外的報頭,比如 From, Cc 以及 Bcc。
parameters 可選。規定 sendmail 程序配置的額外參數。
注:如果要使用mail函數,必須在php.ini文件配置成功和獲得
Sendmail的支持
socket方式發送原理
使用fsockopen函數打開一個Internet連接
fsockopen(string hostname, int port, int [errno], string [errstr], int
[timeout]);
使用的是SMTP協議,所以端口號是25,連接成功后,會返回一個
socket句柄,使用它就可以像使用文件句柄一樣。
可以使用像其他文件句柄一樣,會返回一些值,下面是一些常見的返回
值:
220 服務就緒(在socket連接成功時,會返回此信息)
221 正在處理
250 請求郵件動作正確,
354 開始發送數據,結束以 .
500 語法錯誤,命令不能識別
550 命令不能執行,郵箱無效
552 中斷處理:用戶超出文件空間
例子:(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);
?>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。