學習PHP實現SMTP郵件的傳送

2020-07-16 10:05:59

當你還在糾結php內建的mail()函數不能傳送郵件時,那麼你現在很幸運,此時的這篇文章可以幫助到你!

php利用smtp類來發郵件真是屢試不爽,我用過很久了,基本上沒出過問題。本部落格後台,當博主回復留言時候,會自動給網友發一封有新回復提示的郵件也是用的本文這個方法實現的。

smtp類傳送郵件的方法其實很簡單,也很穩定,類是別人已經寫好的了,你只需要呼叫就行了。幾行簡單的設定就能發郵件,是不是很期待的試一試呢!

<?php
 
/**
 * @param $address mixed 收件人 多個收件人/或需要設定收件人暱稱時為陣列 array($address1,$address1)/array(array('address'=>$address1,'nickname'=>$nickname1),array('address'=>$address2,'nickname'=>$nickname2))
 * @param $subject string 郵件主題
 * @param $body string 郵件內容
 * @param $file string 附件
 * @return bool|string 傳送成功返回true 反之返回報錯資訊
 * @throws Exception
 */
function send_mail_by_smtp($address, $subject, $body, $file = '')
{
 require('./PHPMailer-master/Exception.php');
 require('./PHPMailer-master/PHPMailer.php');
 require('./PHPMailer-master/SMTP.php');
 
 //date_default_timezone_set("Asia/Shanghai");//設定時區東八區
 
 $mail = new PHPMailer();
 
 //Server settings
 $mail->SMTPDebug = 2;
 $mail->isSMTP();     // 使用SMTP方式傳送
 $mail->Host = 'smtp.126.com';    // SMTP郵箱域名
 $mail->SMTPAuth = true;    // 啟用SMTP驗證功能
 $mail->Username = "*****@126.com";   // 郵箱使用者名稱(完整email地址)
 $mail->Password = "*****";    // smtp授權碼,非郵箱登入密碼
 $mail->Port = 25;
 $mail->CharSet = "utf-8";    //設定字元集編碼 "GB2312"
 
 // 設定發件人資訊,顯示為 你看我那裡像好人([email protected])
 $mail->setFrom($mail->Username, '你看我那裡像好人');
 
 //設定收件人 引數1為收件人郵箱 引數2為該收件人設定的暱稱 新增多個收件人 多次呼叫即可
 //$mail->addAddress('********@163.com', '你看我那裡像好人');
 
 if (is_array($address)) {
 foreach ($address as $item) {
 if (is_array($item)) {
 $mail->addAddress($item['address'], $item['nickname']);
 } else {
 $mail->addAddress($item);
 }
 }
 } else {
 $mail->addAddress($address, 'adsf');
 }
 
 
 //設定回復人 引數1為回復人郵箱 引數2為該回復人設定的暱稱
 //$mail->addReplyTo('*****@126.com', 'Information');
 
 if ($file !== '') $mail->AddAttachment($file); // 新增附件
 
 $mail->isHTML(true); //郵件正文是否為html編碼 true或false
 $mail->Subject = $subject; //郵件主題
 $mail->Body = $body;  //郵件正文 若isHTML設定成了true,則可以是完整的html字串 如:使用file_get_contents函數讀取的html檔案
 //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; //附加資訊,可以省略
 
 return $mail->Send() ? true : 'ErrorInfo:' . $mail->ErrorInfo;
}
 
$path = '.wpic907.jpg';
$ret = send_mail_by_smtp('*******@163.com', 'PHPMailer郵件標題', 'PHPMailer郵件內容', $path);

以上就是學習PHP實現SMTP郵件的傳送的詳細內容,更多請關注TW511.COM其它相關文章!