ECMall如何支持SSL连接邮件服务器的配置

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

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

1. 覆盖phpmailer

请从附件进行下载:

http://files.cnblogs.com/x3d/ecmall_phpmailer_lib.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 增加一个配置项


<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>

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


<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 设置
*
* @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(
0 => Lang::get(‘no‘),
1 => ‘SSL‘,
2 => ‘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方式没有测试过。

ECMall如何支持SSL连接邮件服务器的配置,布布扣,bubuko.com

时间: 2024-10-25 06:53:51

ECMall如何支持SSL连接邮件服务器的配置的相关文章

已使用 163 邮箱测试通过,且支持 SSL 连接。 发送邮件

示例:Jack 发送一封邮件给 Rose. public class SendMail {     public static void main(String[] args) {         boolean isSSL = true;         String host = "smtp.163.com";         int port = 465;         String from = "[email protected]";         S

Linux与云计算——第二阶段 第九章:Mail电子邮件服务器架设—配置基于SSL的邮件服务器以及虚拟域的使用

Linux与云计算--第二阶段Linux服务器架设 第九章:Mail电子邮件服务器架设-配置基于SSL的邮件服务器以及虚拟域的使用 邮件客户端配置 可以自行选择电子邮件客户端根据服务器的配置进行设置即可.推荐使用foxmail或者outlook等客户端软件. 配置SSL 配置SSL来加密连接. SMTPS使用端口465/TCP, POP3S使用端口995/TCP, IMAPS使用端口993/TCP. [1] 创建证书 [2] 给Postfix和Dovecot配置SSL. [[email prot

利用openssl实现私有CA以及mysql服务器的ssl连接的配置

利用openssl实现私有CA以及mysql服务器的ssl连接的配置 一.CA简介 CA 也拥有一个证书(内含公钥和私钥).网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书. 如果用户想得到一份属于自己的证书,他应先向 CA 提出申请.在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者. 如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对

烂泥:Postfix邮件服务器搭建之虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 在前一篇文章<烂泥:Postfix邮件服务器搭建之软件安装与配置>中,我们介绍了psotfix邮件服务器搭建所需要的软件,以及各个软件的基本配置. 目前已经达到了通过系统用户可以登录到postfix邮件服务器,但是为了管理的方便和系统安全,我们一般是通过postfix的虚拟用户来管理邮件用户的. Postfix虚拟用户的原理是,先在系统中创建一个用户,该用户不能登录到系统,然后把邮件

Windows Server 2003搭建邮件服务器

由于Windows Server 2003默认是没有安装我们搭建邮件服务器所需要的POP3和SMTP服务的,因此需要我们自己来安装.方法如下: 1. 将Windows Server 2003的系统光盘放入光驱,或者将镜像文件挂载到虚拟光驱.在控制面板中点击“添加或删除程序”,在“添加或删除程序”对话框中,点击“添加/删除Windows组件”.Hn 2. 在“Windows组件向导”中,需要进行如下操作: ① 安装POP3服务. 选中“电子邮件服务”,双击打开,会看到它包括“POP3服务”和“PO

kubuntu+roundcube搭建邮件服务器(包含LAMP)

好久之前写的了,偶然翻到然后拿出来看看,里面文字图片都没改,有错误请见谅 步骤: 一.关于ubuntu的安装二.ubuntu配置LAMP(Linux+Apache+Mysql+Perl/PHP/Python)三.Ubuntu+Sendmail+Dovecot+roundcubewebmail 写在前面: 1.网上多选用openwebmail作为webmail的例子来用(也是因为仿照鸟哥的原因居多)2.本文中选用了较为简单和大众化的roundcubewebmail3.本文中多数指令和教程来源于网络

debian下搭建邮件服务器

第一步 #apt-get update #apt-get upgrade #apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules dovecot-imapd dovecot-pop3d dovecot-common 第二步 配置邮件服务器 首先,停掉这三项服务: #postfix stop #service dovecot stop 接下来,修改postfix的配置文件/etc/postfix/main.cf 由于采用了sas

弄了一个支持SSL的TCP客户端

近日需要做一些TCP的收发的调试,到网上去找TCP调试工具,找了好几款,发现不是功能不全就是不支持HEX,更重要的SSL也不支持,于是动手写了一款,叫TCPRunner,有以下特性: 使用异步IO方式 支持HEX显示/编辑 支持SSL连接 简单易用界面友好 整个程序才40KB大小 基于.net framework 4.5 下载:TCPRunner.7z 看看有没有人用,有必要的话我就公开代码:)

企业Exchange邮件服务器搭建实例

一.案例背景: 因企业业务需求的不同,部分企业需要搭建自己的企业邮箱.搭建邮箱服务器又有多种方法,有时会将域控制器与邮件服务器部署到不同服务器,有时会将邮件服务与邮件数据库安装到多台服务器,企业越大对搭建技术要求越高,而本文的总结是入门级最简单的中小企业案例,将域控制器.邮件服务器.DNS服务器搭建到一台Windows2008服务器上. 企业注册域名:xyz.com, 企业网络架构如下图所示:出口IP:123.1.1.1:内部邮件服务器IP:192.168.1.3:www服务器IP:192.16