源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ECMall支持SSL连接邮件服务器的配置方法详解

  • 时间:2020-02-09 07:42 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ECMall支持SSL连接邮件服务器的配置方法详解
首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接。 然后,得对相应代码做一定调整。 1. 覆盖phpmailer 请从附件进行下载:
[url=http://cywl.jb51.net:81/201405/yuanma/ecmall_phpmailer_lib(jb51.net).zip]http://cywl.jb51.net:81/201405/yuanma/ecmall_phpmailer_lib(jb51.net).zip [/url]
2. 改造lib 涉及到两个lib:mail.lib.php 、mail_quequ.lib.php 在这两个类的构造函数中,增加一个参数传递。如Mailer
[u]复制代码[/u] 代码如下:
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. 封装调用函数 global.lib.php 约300行 function &get_mailer()中增加一行:
[u]复制代码[/u] 代码如下:
$secure   = Conf::get('email_ssl');//增加这一行 $mailer = new Mailer($sender, $from, $protocol, $host, $port, $username, $password, $secure);//同时传递参数
4. 调整后台email设置界面,增加相关设置项 后台模板:setting.email_setting.html 增加一个配置项
[u]复制代码[/u] 代码如下:
<tr>     <th class="paddingT15">邮件服务器加密方式:</th>     <td class="paddingT15 wordSpacing5">        {html_radios name="email_ssl" options=$email_ssl checked=$setting.email_ssl}         <label class="field_notice">此功能要求您的php必须支持OpenSSL模块, 如果您要使用此功能,请联系您的空间商确认支持此模块</label>     </td> </tr>
同时,修改邮件测试的参数传递
[u]复制代码[/u] 代码如下:
<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
[u]复制代码[/u] 代码如下:
/**      *    EMAIL 设置      *      *    @author    Hyber      *    @return    void      */     function email_setting()     {         $model_setting = &af('settings');         $setting = $model_setting->getAll(); //载入系统设置数据         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');         }     }
以及测试邮件方法。
[u]复制代码[/u] 代码如下:
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方式没有测试过。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部