ECMall支持SSL連接郵件服務(wù)器的配置方法詳解
首先,主要是ecmall使用的phpmailer版本太低,不支持加密連接。
然后,得對(duì)相應(yīng)代碼做一定調(diào)整。
1. 覆蓋phpmailer
請(qǐng)從附件進(jìn)行下載:
2. 改造lib
涉及到兩個(gè)lib:mail.lib.php 、mail_quequ.lib.php
在這兩個(gè)類的構(gòu)造函數(shù)中,增加一個(gè)參數(shù)傳遞。如Mailer
function __construct($from, $email, $protocol, $host = '', $port = '', $user = '', $pass = '', $SMTPSecure = false)//增加$SMTPSecure
{
$this->Mailer($from, $email, $protocol, $host, $port, $user, $pass, $SMTPSecure);
}
function Mailer($from, $email, $protocol, $host = '', $port = '', $user = '', $pass = '', $SMTPSecure = false)
....
MailQueue中同理。
3. 封裝調(diào)用函數(shù)
global.lib.php 約300行
function &get_mailer()中增加一行:
$secure = Conf::get('email_ssl');//增加這一行
$mailer = new Mailer($sender, $from, $protocol, $host, $port, $username, $password, $secure);//同時(shí)傳遞參數(shù)
4. 調(diào)整后臺(tái)email設(shè)置界面,增加相關(guān)設(shè)置項(xiàng)
后臺(tái)模板:setting.email_setting.html 增加一個(gè)配置項(xiàng)
<tr>
<th class="paddingT15">郵件服務(wù)器加密方式:</th>
<td class="paddingT15 wordSpacing5">
{html_radios name="email_ssl" options=$email_ssl checked=$setting.email_ssl}
<label class="field_notice">此功能要求您的php必須支持OpenSSL模塊, 如果您要使用此功能,請(qǐng)聯(lián)系您的空間商確認(rèn)支持此模塊</label>
</td>
</tr>
同時(shí),修改郵件測(cè)試的參數(shù)傳遞
<script type="text/javascript">
$(function(){
$('#send_test_email').click(send_test_email);
});
function send_test_email(){
var email_type = $('input[name="email_type"]:checked').val();
var email_ssl = $('input[name="email_ssl"]:checked').val();//增加這一行
$.ajax({
type:"POST",
url:"index.php",
data:'app=setting&act=send_test_email&email_type='+email_type+'&email_host='+$("#email_host").val()+'&email_port='+$("#email_port").val()+'&email_addr='+$("#email_addr").val()+'&email_id='+$("#email_id").val()+'&email_pass='+$("#email_pass").val()+'&email_test='+$("#email_test").val()+'&email_ssl='+email_ssl,
dataType:"json",
success:function(data){
if(data.done){
alert(data.msg);
}
else{
alert(data.msg);
}
},
error: function(){alert('{$lang.mail_send_failure}');}
});
}
</script>
然后還需要修改setting.app.php
/**
* EMAIL 設(shè)置
*
* @author Hyber
* @return void
*/
function email_setting()
{
$model_setting = &af('settings');
$setting = $model_setting->getAll(); //載入系統(tǒng)設(shè)置數(shù)據(jù)
if (!IS_POST)
{
$this->assign('setting', $setting);
$this->assign('mail_type', array(
MAIL_PROTOCOL_SMTP => Lang::get('smtp'),
MAIL_PROTOCOL_LOCAL => Lang::get('email'),
));
//增加
$this->assign('email_ssl', array(
=> Lang::get('no'),
=> 'SSL',
=> 'TLS',
));
$this->display('setting.email_setting.html');
}
else
{
$data['email_type'] = $_POST['email_type'];
$data['email_host'] = $_POST['email_host'];
$data['email_ssl'] = $_POST['email_ssl'];//增加
$data['email_port'] = $_POST['email_port'];
$data['email_addr'] = $_POST['email_addr'];
$data['email_id'] = $_POST['email_id'];
$data['email_pass'] = $_POST['email_pass'];
$data['email_test'] = $_POST['email_test'];
$model_setting->setAll($data);
$this->show_message('edit_email_setting_successed');
}
}
以及測(cè)試郵件方法。
function send_test_email()
{
if (IS_POST)
{
$email_from = Conf::get('site_name');
$email_type = $_POST['email_type'];
$email_host = $_POST['email_host'];
$email_ssl = $_POST['email_ssl'];//增加
$email_port = $_POST['email_port'];
$email_addr = $_POST['email_addr'];
$email_id = $_POST['email_id'];
$email_pass = $_POST['email_pass'];
$email_test = $_POST['email_test'];
$email_subject = Lang::get('email_subjuect');
$email_content = Lang::get('email_content');
/* 使用mailer類 */
import('mailer.lib');
$mailer = new Mailer($email_from, $email_addr, $email_type, $email_host, $email_port, $email_id, $email_pass, $email_ssl);//增加
$mail_result = $mailer->send($email_test, $email_subject, $email_content, CHARSET, 1);
if ($mail_result)
{
$this->json_result('', 'mail_send_succeed');
}
else
{
$this->json_error('mail_send_failure', implode("\n", $mailer->errors));
}
}
else
{
$this->show_warning('Hacking Attempt');
}
}
tls方式?jīng)]有測(cè)試過(guò)。
相關(guān)文章
使用PHP進(jìn)行微信公眾平臺(tái)開發(fā)的示例
這篇文章主要介紹了使用PHP進(jìn)行微信公眾平臺(tái)開發(fā)的示例,包括基本的微信平臺(tái)API調(diào)用和XML處理等,需要的朋友可以參考下2015-08-08Yii2框架視圖(View)操作及Layout的使用方法分析
這篇文章主要介紹了Yii2框架視圖(View)操作及Layout的使用方法,結(jié)合具體實(shí)例形式分析了Yii2框架視圖操作及布局layout相關(guān)操作技巧,需要的朋友可以參考下2019-05-05免費(fèi)的ip數(shù)據(jù)庫(kù)淘寶IP地址庫(kù)簡(jiǎn)介和PHP調(diào)用實(shí)例
淘寶ip地址庫(kù)提供免費(fèi)的ip信息查詢,可查詢ip所在國(guó)家、區(qū)域、省份、城市及運(yùn)營(yíng)商等信息。不需要認(rèn)證不需要注冊(cè),唯一的小缺陷就是限制美妙查詢頻率不能高于10次。2014-04-04ThinkPHP在新浪SAE平臺(tái)的部署實(shí)例
這篇文章主要介紹了ThinkPHP在新浪SAE平臺(tái)的部署的實(shí)現(xiàn)方法,以實(shí)例的形式詳細(xì)講述了WBlog的完整部署過(guò)程,需要的朋友可以參考下2014-10-10PHPStorm2020.1永久激活及下載更新至2020(推薦)
這篇文章主要介紹了PHPStorm2020.1永久激活及下載更新至2020,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09PHP正在進(jìn)行時(shí)-變量詳解及字符串動(dòng)態(tài)插入變量
這篇文章主要介紹了PHP正在進(jìn)行時(shí)-變量詳解及字符串動(dòng)態(tài)插入變量的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12