我的php學習筆記(42) PHP通過mail()或Socket發從郵件

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 = "[email protected]";  
    $smtpemailto = "[email protected]";  
      
    $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);
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章