ecmall php传变量,PHP_ECMall支持SSL连接邮件服务器的配置方法详解,首先,主要是ecmall使用的phpmail - phpStudy...

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

首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接。

然后,得对相应代码做一定调整。

1. 覆盖phpmailer

请从附件进行下载:

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 name="email_ssl" options=$email_ssl checked=$setting.email_ssl}

此功能要求您的php必须支持OpenSSL模块, 如果您要使用此功能,请联系您的空间商确认支持此模块

同时,修改邮件测试的参数传递

$(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}');}

});

}

然后还需要修改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');

}

}

以及测试邮件方法。

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方式没有测试过。相关阅读:

CentOS 5.4 rsync+inotify配置触发式(实时)文件远程同步

判定一个字符串是否为有效时间的函数

HTML form应用包括复选框、单选按钮的使用

jQuery地图map悬停显示省市代码分享

C#实现基于IE内核的简单浏览器完整实例

在CentOS中安装OpenERP的教程

Android应用启动速度优化

CSS控制链接显示状态的CSS伪类

mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

教你如何在MySQL命令行中使用SQL语句的规则

Linux系统下Flash Player崩溃的一个解决办法分享

Android 布局控件之LinearLayout详细介绍

javascript的理解及经典案例分析

Linux内存文件系统tmpfs(/dev/shm)详细介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值