phpMailer的函式使用方式

2015-12-25

一般透過php做mail的動作可以由內建的email()函式來實現,可是因為相關的設定很繁複,有時候問題又很多,所以我們可以使用以處理完善設定後的php來做運用即可,如此就不需要這麼麻煩的做很多繁雜的header設定

首先我們先去phpmailer的github載點下載 https://github.com/PHPMailer/PHPMailer

下載下來後放到網站目錄下,我們同樣要進行include的動作把class引用進我們的頁面

include('phpmailer/PHPMailerAutoload.php');

另外我們需要把文件設定為utf-8格式文件

mb_internal_encoding('UTF-8');

寄信

//用phpmailer來寄信
$subject = 主題;
$content = 內容;
$sender_mail_address = 寄件人email;
$sender_mail_name = 寄件人name;
$receiver_mail_address = 收件人email;

$receiver_mail_name = 收件人name;

//如果有附加檔案

$filename=$_FILES['file']['name']; //檔名
$tmpname=$_FILES['file']['tmp_name']; //暫存路徑
$filetype=$_FILES['file']['type']; //格式
$filesize=$_FILES['file']['size']; //大小

$mail = new PHPMailer;
$mail->isSMTP(); //使用smtp來寄信
$mail->Timeout = 10; // 設定寄信等待時間,如果超過這個時間就直接中止 (秒)
$mail->CharSet = 'UTF-8';
$mail->setFrom($sender_mail_address, "=?UTF-8?B?".base64_encode($sender_mail_name)."?="); //寄件人 email, name
$mail->addAddress($receiver_mail_address, $receiver_mail_name); //收件人 email, name
$mail->Subject = "=?UTF-8?B?".base64_encode($subject)."?="; //主題 在網路上看到的可以試試看 mb_encode_mimeheader($subject, "UTF-8");
$mail->isHTML(true); //此信件為html內容本文
$mail->Body = eregi_replace("[]",'',$content); //內容
$mail->AddAttachment($tmpname, $filename); //附加檔案
$deliveryState = $mail->send();
if (!$deliveryState){
    $error_msg = $mail->ErrorInfo; //信件寄件訊息(可以log起來做追蹤)
}

此外,我們可以設計寄信的html範本,然後把資料引用進去不用每次都重新寫一次html的結構

$content = "親愛的".$_POST['contact_person']."您好:


                    這裡您可以寫自己要寫入html範本的信件資料
                    然後告知一下此信件為系統自行發送,請勿回覆此信件!";
                                
//套用內容至範本
$msg_mail = new object();
$msg_mail->var1= $var1; //看範本內中有那些自訂的欄位,將動態資料寫入給範本
$msg_mail->var2= $var2;
$mail_content = useTmp(範本路徑, $msg_mail); //將信件內容帶入範本後,此內容就可以拿來給phpmailer用來寄信囉

//非常簡單的套用範本函式 
function useTmp($tmpPath, $replaceString){
    $output = file_get_contents($tmpPath);
    foreach ($replaceString as $key => $value) {
        $output = str_replace('{'.$key.'}',$value,$output);
    }
    return $output;
}

範本的內容

<html>
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>{var1}</title>
</head>
<body>{var2}</body>
</html>

這是很簡單的使用,phpmailer可以做的事情還很多,包或透過google來寄信阿,附加檔案等等...

這裡提供一些教學,可以試試看:

http://belleaya.pixnet.net/blog/post/27410978-%5B%E6%95%99%E5%AD%B8%5D-php-%E5%88%A9%E7%94%A8-phpmailer-%E9%80%8F%E9%81%8E-gmail-%E5%AF%84%E4%BF%A1

http://blog.dreamweaver.com.tw/2012/03/php-gmail-smtp-phpmailer.html

附加檔案的教學

http://iammic.pixnet.net/blog/post/11305582-php-mail-%E7%99%BC%E9%80%81%EF%BC%8C%E5%A4%BE%E5%B8%B6%E9%99%84%E4%BB%B6%E6%AA%94

Contact

Github

Codepen

歡迎參觀我的賣場
© 2013 Copyright Digishot Web | Design Tools
Visitors【154299】
digishot webdesign studio