本文目錄一覽:
php如何發送郵件
你好,用這個郵件類,需要在調用時,填寫一個smtp伺服器和你的用戶名密碼。
?php
set_time_limit(600);
/*
* 郵件發送類
*/
class smail {
//您的SMTP 伺服器供應商,可以是域名或IP地址
var $smtp = “”;
//SMTP需要要身份驗證設值為 1 不需要身份驗證值為 0,現在大多數的SMTP服務商都要驗證,如不清楚請與你的smtp 服務商聯繫。
var $check = 1;
//您的email帳號名稱
var $username = “”;
//您的email密碼
var $password = “”;
//此email 必需是發信伺服器上的email
var $s_from = “”;
/*
* 功能:發信初始化設置
* $from 你的發信伺服器上的郵箱
* $password 你的郵箱密碼
* $smtp 您的SMTP 伺服器供應商,可以是域名或IP地址
* $check SMTP需要要身份驗證設值為 1 不需要身份驗證值為 0,現在大多數的SMTP服務商都要驗證
*/
function smail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match(“/^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]+[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{2,3}/”, $from ) ) {
$this-username = substr( $from, 0, strpos( $from , “@” ) );
$this-password = $password;
$this-smtp = $smtp ? $smtp : $this-smtp;
$this-check = $check;
$this-s_from = $from;
}
}
/*
* 功能:發送郵件
* $to 目標郵箱
* $from 來源郵箱
* $subject 郵件標題
* $message 郵件內容
*/
function send ( $to, $from, $subject, $message ) {
//連接伺服器
$fp = fsockopen ( $this-smtp, 25, $errno, $errstr, 60);
if (!$fp ) return “聯接伺服器失敗”.__LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return “錯誤信息1:$lastmessage”.__LINE__;
//HELO
$yourname = “YOURNAME”;
if($this-check == “1”) $lastact=”EHLO “.$yourname.”\r\n”;
else $lastact=”HELO “.$yourname.”\r\n”;
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return “錯誤信息2:$lastmessage”.__LINE__;
while (true) {
$lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != “-“) or (empty($lastmessage)) )
break;
}
//身份驗證
if ($this-check==”1″) {
//驗證開始
$lastact=”AUTH LOGIN”.”\r\n”;
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return “錯誤信息3:$lastmessage”.__LINE__;
//用戶姓名
$lastact=base64_encode($this-username).”\r\n”;
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return “錯誤信息4:$lastmessage”.__LINE__;
//用戶密碼
$lastact=base64_encode($this-password).”\r\n”;
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != “235”) return “錯誤信息5:$lastmessage”.__LINE__;
}
//FROM:
$lastact=”MAIL FROM: “. $this-s_from . “\r\n”;
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return “錯誤信息6:$lastmessage”.__LINE__;
//TO:
$lastact=”RCPT TO: “. $to .” \r\n”;
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return “錯誤信息7:$lastmessage”.__LINE__;
//DATA
$lastact=”DATA\r\n”;
fputs($fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return “錯誤信息8:$lastmessage”.__LINE__;
//處理Subject頭
$head=”Subject: $subject\r\n”;
$message = $head.”\r\n”.$message;
//處理From頭
$head=”From: $from\r\n”;
$message = $head.$message;
//處理To頭
$head=”To: $to\r\n”;
$message = $head.$message;
//加上結束串
$message .= “\r\n.\r\n”;
//發送信息
fputs($fp, $message);
$lastact=”QUIT\r\n”;
fputs($fp,$lastace);
fclose($fp);
return 0;
}
}
// 發送示例
// 只需要把這部分改成你的信息就行
$sm = new smail( “用戶名”, “密碼”, “發件smtp伺服器” );
$end = $sm-send( “收件人”, “發件人(可以偽造哦)”, “標題”, “內容” );
if( $end ) echo $end;
else echo “發送成功!$x”;
?
如何正確運用PHP發送郵件函數
PHP發送郵件函數的應用代碼示例:
#echo send_mail($_POST[“email”],$tosubject,$_POST[“errortext”]);
echo send_mail(‘someone@126.com’,’only a test mail for test php mail function’,’一封垃圾郵件’);
echo time();
function send_mail($to, $subject = ‘No subject’, $body) {
$loc_host = “mail.server”; //發信計算機名,可隨意
$smtp_acc = “smp@163.com”; //Smtp認證的用戶名
$smtp_pass=”pwdpwd”; //Smtp認證的密碼,一般等同pop3密碼
$smtp_host=”smtp.163.com”; //SMTP伺服器地址,類似 smtp.tom.com
$from=”smp@163.com”; //發信人Email地址,你的發信信箱地址
$deliver=$smtp_acc; //回復到指定郵箱
$headers = “Content-Type: text/plain; charset=”gb2312″rnContent-Transfer-Encoding: base64”;
$lb=”rn”; //linebreak
$hdr = explode($lb,$headers); //解析後的hdr
if($body) {$bdy = preg_replace(“/^./”,”..”,explode($lb,$body));}//解析後的Body
$smtp = array(
//1、EHLO,期待返回220或者250
array(“EHLO “.$loc_host.$lb,”220,250”,”HELO error: “),
//2、發送Auth Login,期待返回334
array(“AUTH LOGIN”.$lb,”334″,”AUTH error:”),
//3、發送經過Base64編碼的用戶名,期待返回334
array(base64_encode($smtp_acc).$lb,”334″,”AUTHENTIFICATION error : “),
//4、發送經過Base64編碼的密碼,期待返回235
array(base64_encode($smtp_pass).$lb,”235″,”AUTHENTIFICATION error : “));
//5、發送Mail From,期待返回250
$smtp[] = array(“MAIL FROM: “.$from.””.$lb,”250″,”MAIL FROM error: “);
//6、發送Rcpt To。期待返回250
$smtp[] = array(“RCPT TO: “.$to.””.$lb,”250″,”RCPT TO error: “);
//7、發送DATA,期待返回354
$smtp[] = array(“DATA”.$lb,”354″,”DATA error: “);
//8.0、發送From
$smtp[] = array(“From: “.$deliver.$lb,””,””);
//8.2、發送To
$smtp[] = array(“To: “.$to.$lb,””,””);
//8.1、發送標題
$smtp[] = array(“Subject: “.$subject.$lb,””,””);
//8.3、發送其他Header內容
foreach($hdr as $h) {$smtp[] = array($h.$lb,””,””);}
//8.4、發送一個空行,結束Header發送
$smtp[] = array($lb,””,””);
//8.5、發送信件主體
if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,””,””);}}
//9、發送「.」表示信件結束,期待返回250
$smtp[] = array(“.”.$lb,”250″,”DATA(end)error: “);
//10、發送Quit,退出,期待返回221
$smtp[] = array(“QUIT”.$lb,”221″,”QUIT error: “);
//打開smtp伺服器埠
$fp = @fsockopen($smtp_host, 25);
if (!$fp) echo “bError:/b Cannot conect to “.$smtp_host.”br”;
while($result = @fgets($fp, 1024)){if(substr($result,3,1) == ” “) { break; }}
$result_str=””;
//發送smtp數組中的命令/數據
foreach($smtp as $req){
//發送信息
@fputs($fp, $req[0]);
//如果需要接收伺服器返回信息,則
if($req[1]){
//接收信息
while($result = @fgets($fp, 1024)){
if(substr($result,3,1) == ” “) { break; }
};
if (!strstr($req[1],substr($result,0,3))){
$result_str.=$req[2].$result.”br”;
}
}
}
//關閉連接
@fclose($fp);
return $result_str;
}
希望上面這段代碼示例能讓大家充分掌握PHP發送郵件函數的運用。
怎麼用php的mail函數發郵件
function sendMail($to, $title, $content) {
Vendor(‘PHPMailer.PHPMailerAutoload’);
$mail = new PHPMailer(); //實例化
$mail-IsSMTP(); // 啟用SMTP
$mail-Host=C(‘MAIL_HOST’); //smtp伺服器的名稱(這裡以QQ郵箱為例)
$mail-SMTPAuth = C(‘MAIL_SMTPAUTH’); //啟用smtp認證
$mail-Username = C(‘MAIL_USERNAME’); //你的郵箱名
$mail-Password = C(‘MAIL_PASSWORD’) ; //郵箱密碼
$mail-From = C(‘MAIL_FROM’); //發件人地址(也就是你的郵箱地址)
$mail-FromName = C(‘MAIL_FROMNAME’); //發件人姓名
$mail-AddAddress($to,”尊敬的客戶”);
$mail-WordWrap = 50; //設置每行字元長度
$mail-IsHTML(C(‘MAIL_ISHTML’)); // 是否HTML格式郵件
$mail-CharSet=C(‘MAIL_CHARSET’); //設置郵件編碼
$mail-Subject =$title; //郵件主題
$mail-Body = $content; //郵件內容
$mail-AltBody = “”; //郵件正文不支持HTML的備用顯示
$relt = $mail-Send();
if(!$relt) {
writeLog(‘發送郵件錯誤,錯誤信息:’. $mail-ErrorInfo, 1, ‘發送郵箱失敗’);
}
return($relt);
}
這個是thinkphp版本的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/248706.html