關於$xoopsMailer郵件參數的基本說明之前有寫過一篇教學了,有需要的朋友可以參考看看!!
https://neohsuxoops.blogspot.com/2018/01/xoops-xoops-xoopsmailer.html
上次的範例是寄送純文字格式的郵件,本次教學主要是寄送html格式郵件,也就是電子賀卡或廣告DM那樣的功能,但又不使用繁瑣的樣板模式直接用PHP就能寄送內容,簡單便利,CODE如下。
1、需要先建立一個function放置要寄送的html內容
function boxfunction(){
global $xoopsModule,$xoopsConfig;
//引入CSS檔
$cssbox="
<style type='text/css'>
/* <![CDATA[ */
@charset 'UTF-8';
@import url('".XOOPS_URL."/modules/tadtools/bootstrap3/css/bootstrap.css');
@import url('".XOOPS_URL."/modules/tadtools/smartmenus/addons/bootstrap/jquery.smartmenus.bootstrap.css');
@import url('".XOOPS_URL."/modules/tadtools/css/font-awesome/css/font-awesome.css');
@import url('".XOOPS_URL."/modules/模組ID/css/style.css');
#centerboxbody{
position: relative;
font-family:'Helvetica Neue',Helvetica,Arial,'微軟正黑體',sans-serif;
width: 100% !important;
text-align: center;
}
#center{
position: relative;
width: 800px;
text-align: left;
}
#centerboxbody .thumbnail{
text-align: center !important;
max-width: 800px !important;
}
/* ]]> */
</style>";
//圖檔連結
$imgbox=XOOPS_URL."/uploads/模組ID/image/.tmb/圖檔檔名.jpg?state=".date("H:i:s")."";
$data="
".$cssbox."
<div id='centerboxbody'>
<div id='center'>
<h3>標題標題標題標題標題</h3>
<div class='thumbnail'> <img src='".$imgbox."'></div>
<div>內容內容內容內容內容內容內容內容內容</div>
</div></div>
":
return $data;
}
2、於寄信程式中呼叫剛剛建立的boxfunction()函數,並建立$xoopsMailer設定
//寄送郵件function
function sendagreetingcardmail($ecardArr="",$timedate=""){
global $xoopsConfig,$xoopsMailer,$xoopsModule;
$xoopsMailer = &getMailer();
$xoopsMailer->multimailer->ContentType = "text/html";
$xoopsMailer->addHeaders("MIME-Version: 1.0");
$xoopsMailer->useMail();
$xoopsMailer->setToEmails($ecardArr[3]); //收件人信箱
$xoopsMailer->setFromEmail();
$xoopsMailer->setFromName($xoopsConfig['sitename']);
$xoopsMailer->setSubject(sprintf(_MA_MAIL01,$timedate,$ecardArr[0]));
//define("_MA_MAIL01","%s-%s寄送了一張賀卡給您喔");
https://neohsuxoops.blogspot.com/2018/01/xoops-xoops-xoopsmailer.html
上次的範例是寄送純文字格式的郵件,本次教學主要是寄送html格式郵件,也就是電子賀卡或廣告DM那樣的功能,但又不使用繁瑣的樣板模式直接用PHP就能寄送內容,簡單便利,CODE如下。
1、需要先建立一個function放置要寄送的html內容
function boxfunction(){
global $xoopsModule,$xoopsConfig;
//引入CSS檔
$cssbox="
<style type='text/css'>
/* <![CDATA[ */
@charset 'UTF-8';
@import url('".XOOPS_URL."/modules/tadtools/bootstrap3/css/bootstrap.css');
@import url('".XOOPS_URL."/modules/tadtools/smartmenus/addons/bootstrap/jquery.smartmenus.bootstrap.css');
@import url('".XOOPS_URL."/modules/tadtools/css/font-awesome/css/font-awesome.css');
@import url('".XOOPS_URL."/modules/模組ID/css/style.css');
#centerboxbody{
position: relative;
font-family:'Helvetica Neue',Helvetica,Arial,'微軟正黑體',sans-serif;
width: 100% !important;
text-align: center;
}
#center{
position: relative;
width: 800px;
text-align: left;
}
#centerboxbody .thumbnail{
text-align: center !important;
max-width: 800px !important;
}
/* ]]> */
</style>";
//圖檔連結
$imgbox=XOOPS_URL."/uploads/模組ID/image/.tmb/圖檔檔名.jpg?state=".date("H:i:s")."";
$data="
".$cssbox."
<div id='centerboxbody'>
<div id='center'>
<h3>標題標題標題標題標題</h3>
<div class='thumbnail'> <img src='".$imgbox."'></div>
<div>內容內容內容內容內容內容內容內容內容</div>
</div></div>
":
return $data;
}
2、於寄信程式中呼叫剛剛建立的boxfunction()函數,並建立$xoopsMailer設定
//寄送郵件function
function sendagreetingcardmail($ecardArr="",$timedate=""){
global $xoopsConfig,$xoopsMailer,$xoopsModule;
$xoopsMailer = &getMailer();
$xoopsMailer->multimailer->ContentType = "text/html";
$xoopsMailer->addHeaders("MIME-Version: 1.0");
$xoopsMailer->useMail();
$xoopsMailer->setToEmails($ecardArr[3]); //收件人信箱
$xoopsMailer->setFromEmail();
$xoopsMailer->setFromName($xoopsConfig['sitename']);
$xoopsMailer->setSubject(sprintf(_MA_MAIL01,$timedate,$ecardArr[0]));
//define("_MA_MAIL01","%s-%s寄送了一張賀卡給您喔");
$xoopsMailer->setBody(boxfunction()); //使用setBody寄出boxfunction()函數內容
// 發送郵件
if (!$xoopsMailer->send()){
$status=false;
}else{
$status=true;
}
return $status;
}
// 發送郵件
if (!$xoopsMailer->send()){
$status=false;
}else{
$status=true;
}
return $status;
}
3、於觸發寄信的PHP中呼叫郵寄函數,這樣就能吧郵件寄出,並且是HTML格式
sendagreetingcardmail($ecardArr=$Arr,$timedate=timedate($datevar="Y-m-d H:i:s"));
sendagreetingcardmail($ecardArr=$Arr,$timedate=timedate($datevar="Y-m-d H:i:s"));
4、實際收一下信看是否是以HTML格式寄出
這樣就沒問題了,但有一點需要注意,就是Gmail只接受ssl加密的連結格式,也就是網址必須為https的,若沒有ssl加密則圖檔或css連結會被阻擋無法顯示,但收信到Windows Live Mail則沒這問題格式圖檔都會正常顯示。
這樣就沒問題了,但有一點需要注意,就是Gmail只接受ssl加密的連結格式,也就是網址必須為https的,若沒有ssl加密則圖檔或css連結會被阻擋無法顯示,但收信到Windows Live Mail則沒這問題格式圖檔都會正常顯示。
有需要的朋友參考看看
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言