您好,欢迎访问一九零五行业门户网

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

这篇文章主要介绍了ecmall支持ssl连接邮件服务器的配置方法详解
首先,主要是ecmall使用的phpmailer版本太低,,不支持加密连接。
然后,得对相应代码做一定调整。
1. 覆盖phpmailer
请从附件进行下载:
复制代码 代码如下:
:81/201405/yuanma/ecmall_phpmailer_lib(jb51.net).zip
2. 改造lib
涉及到两个lib:mail.lib.php 、mail_quequ.lib.php
在这两个类的构造函数中,增加一个参数传递。如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. 封装调用函数
global.lib.php 约300行
function &get_mailer()中增加一行:
复制代码 代码如下:
$secure   = conf::get('email_ssl');//增加这一行
$mailer = new mailer($sender, $from, $protocol, $host, $port, $username, $password, $secure);//同时传递参数
4. 调整后台email设置界面,增加相关设置项
后台模板:setting.email_setting.html 增加一个配置项
复制代码 代码如下:
邮件服务器加密方式:
{html_radios options=$email_ssl checked=$setting.email_ssl}
        此功能要求您的php必须支持openssl模块, 如果您要使用此功能,请联系您的空间商确认支持此模块
同时,修改邮件测试的参数传递
复制代码 代码如下:
然后还需要修改setting.app.php
复制代码 代码如下:
/**
     *    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');
        }
    }
以及测试邮件方法。
复制代码 代码如下:
其它类似信息

推荐信息