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
<span>function</span> __construct(<span>$from</span>, <span>$email</span>, <span>$protocol</span>, <span>$host</span> = '', <span>$port</span> = '', <span>$user</span> = '', <span>$pass</span> = '', <span>$SMTPSecure</span> = <span>false</span><span>)//增加<span>$SMTPSecure</span> { </span><span>$this</span>->Mailer(<span>$from</span>, <span>$email</span>, <span>$protocol</span>, <span>$host</span>, <span>$port</span>, <span>$user</span>, <span>$pass</span>, <span>$SMTPSecure</span><span>); } </span><span>function</span> Mailer(<span>$from</span>, <span>$email</span>, <span>$protocol</span>, <span>$host</span> = '', <span>$port</span> = '', <span>$user</span> = '', <span>$pass</span> = '', <span>$SMTPSecure</span> = <span>false</span><span>) </span>....
MailQueue中同理。
3. 封装调用函数
global.lib.php 约300行
function &get_mailer()中增加一行:
<span>$secure</span> = Conf::get('email_ssl'<span>);//增加这一行 </span><span>$mailer</span> = <span>new</span> Mailer(<span>$sender</span>, <span>$from</span>, <span>$protocol</span>, <span>$host</span>, <span>$port</span>, <span>$username</span>, <span>$password</span>, <span>$secure</span>);//同时传递参数
4. 调整后台email设置界面,增加相关设置项
后台模板:setting.email_setting.html 增加一个配置项
<span><</span><span>tr</span><span>></span> <span><</span><span>th </span><span>class</span><span>="paddingT15"</span><span>></span><span> 邮件服务器加密方式:</span><span></</span><span>th</span><span>></span> <span><</span><span>td </span><span>class</span><span>="paddingT15 wordSpacing5"</span><span>></span><span> {html_radios name="email_ssl" options=$email_ssl checked=$setting.email_ssl} </span><span><</span><span>label </span><span>class</span><span>="field_notice"</span><span>></span>此功能要求您的php必须支持OpenSSL模块, 如果您要使用此功能,请联系您的空间商确认支持此模块<span></</span><span>label</span><span>></span> <span></</span><span>td</span><span>></span> <span></</span><span>tr</span><span>></span>
同时,修改邮件测试的参数传递
<span><</span><span>script </span><span>type</span><span>="text/javascript"</span><span>></span><span> $(</span><span>function</span><span>(){ $(</span><span>'</span><span>#send_test_email</span><span>'</span><span>).click(send_test_email); }); </span><span>function</span><span> send_test_email(){ </span><span>var</span><span> email_type </span><span>=</span><span> $(</span><span>'</span><span>input[name="email_type"]:checked</span><span>'</span><span>).val(); </span><span>var</span><span> email_ssl </span><span>=</span><span> $(</span><span>'</span><span>input[name="email_ssl"]:checked</span><span>'</span><span>).val();//增加这一行 $.ajax({ type:</span><span>"</span><span>POST</span><span>"</span><span>, url:</span><span>"</span><span>index.php</span><span>"</span><span>, data:</span><span>'</span><span>app=setting&act=send_test_email&email_type=</span><span>'</span><span>+</span><span>email_type</span><span>+</span><span>'</span><span>&email_host=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_host</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_port=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_port</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_addr=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_addr</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_id=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_id</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_pass=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_pass</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_test=</span><span>'</span><span>+</span><span>$(</span><span>"</span><span>#email_test</span><span>"</span><span>).val()</span><span>+</span><span>'</span><span>&email_ssl=</span><span>'</span><span>+</span><span>email_ssl, dataType:</span><span>"</span><span>json</span><span>"</span><span>, success:</span><span>function</span><span>(data){ </span><span>if</span><span>(data.done){ alert(data.msg); } </span><span>else</span><span>{ alert(data.msg); } }, error: </span><span>function</span><span>(){alert(</span><span>'</span><span>{$lang.mail_send_failure}</span><span>'</span><span>);} }); } </span><span></</span><span>script</span><span>></span>
然后还需要修改setting.app.php
<span>/*</span><span>* * EMAIL 设置 * * @author Hyber * @return void </span><span>*/</span> <span>function</span><span> email_setting() { </span><span>$model_setting</span> = &af('settings'<span>); </span><span>$setting</span> = <span>$model_setting</span>->getAll(); <span>//</span><span>载入系统设置数据</span> <span>if</span> (!<span>IS_POST) { </span><span>$this</span>->assign('setting', <span>$setting</span><span>); </span><span>$this</span>->assign('mail_type', <span>array</span><span>( MAIL_PROTOCOL_SMTP </span>=> Lang::get('smtp'),<span> MAIL_PROTOCOL_LOCAL </span>=> Lang::get('email'),<span> ));<br /> <span>//增加 </span></span><span>$this</span>->assign('email_ssl', <span>array</span><span>( </span>0 => Lang::get('no'), 1 => 'SSL', 2 => 'TLS',<span> )); </span><span>$this</span>->display('setting.email_setting.html'<span>); } </span><span>else</span><span> { </span><span>$data</span>['email_type'] = <span>$_POST</span>['email_type'<span>]; </span><span>$data</span>['email_host'] = <span>$_POST</span>['email_host'<span>]; </span><span>$data</span>['email_ssl'] = <span>$_POST</span>['email_ssl'<span>];<span>//增加 </span></span><span>$data</span>['email_port'] = <span>$_POST</span>['email_port'<span>]; </span><span>$data</span>['email_addr'] = <span>$_POST</span>['email_addr'<span>]; </span><span>$data</span>['email_id'] = <span>$_POST</span>['email_id'<span>]; </span><span>$data</span>['email_pass'] = <span>$_POST</span>['email_pass'<span>]; </span><span>$data</span>['email_test'] = <span>$_POST</span>['email_test'<span>]; </span><span>$model_setting</span>->setAll(<span>$data</span><span>); </span><span>$this</span>->show_message('edit_email_setting_successed'<span>); } }</span>
以及测试邮件方法。
<span>function</span><span> send_test_email() { </span><span>if</span><span> (IS_POST) { </span><span>$email_from</span> = Conf::get('site_name'<span>); </span><span>$email_type</span> = <span>$_POST</span>['email_type'<span>]; </span><span>$email_host</span> = <span>$_POST</span>['email_host'<span>]; </span><span>$email_ssl</span> = <span>$_POST</span>['email_ssl'<span>];<span>//增加 </span></span><span>$email_port</span> = <span>$_POST</span>['email_port'<span>]; </span><span>$email_addr</span> = <span>$_POST</span>['email_addr'<span>]; </span><span>$email_id</span> = <span>$_POST</span>['email_id'<span>]; </span><span>$email_pass</span> = <span>$_POST</span>['email_pass'<span>]; </span><span>$email_test</span> = <span>$_POST</span>['email_test'<span>]; </span><span>$email_subject</span> = Lang::get('email_subjuect'<span>); </span><span>$email_content</span> = Lang::get('email_content'<span>); </span><span>/*</span><span> 使用mailer类 </span><span>*/</span><span> import(</span>'mailer.lib'<span>); </span><span>$mailer</span> = <span>new</span> Mailer(<span>$email_from</span>, <span>$email_addr</span>, <span>$email_type</span>, <span>$email_host</span>, <span>$email_port</span>, <span>$email_id</span>, <span>$email_pass</span>, <span>$email_ssl</span><span>);<span>//增加 </span></span><span>$mail_result</span> = <span>$mailer</span>->send(<span>$email_test</span>, <span>$email_subject</span>, <span>$email_content</span>, CHARSET, 1<span>); </span><span>if</span> (<span>$mail_result</span><span>) { </span><span>$this</span>->json_result('', 'mail_send_succeed'<span>); } </span><span>else</span><span> { </span><span>$this</span>->json_error('mail_send_failure', <span>implode</span>("\n", <span>$mailer</span>-><span>errors)); } } </span><span>else</span><span> { </span><span>$this</span>->show_warning('Hacking Attempt'<span>); } }</span>
tls方式没有测试过。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL 有免费的社区版和收费的企业版。社区版可免费使用和修改,但支持有限,适合稳定性要求不高、技术能力强的应用。企业版提供全面商业支持,适合需要稳定可靠、高性能数据库且愿意为支持买单的应用。选择版本时考虑的因素包括应用关键性、预算和技术技能。没有完美的选项,只有最合适的方案,需根据具体情况谨慎选择。

文章介绍了MySQL数据库的上手操作。首先,需安装MySQL客户端,如MySQLWorkbench或命令行客户端。1.使用mysql-uroot-p命令连接服务器,并使用root账户密码登录;2.使用CREATEDATABASE创建数据库,USE选择数据库;3.使用CREATETABLE创建表,定义字段及数据类型;4.使用INSERTINTO插入数据,SELECT查询数据,UPDATE更新数据,DELETE删除数据。熟练掌握这些步骤,并学习处理常见问题和优化数据库性能,才能高效使用MySQL。

MySQL数据库性能优化指南在资源密集型应用中,MySQL数据库扮演着至关重要的角色,负责管理海量事务。然而,随着应用规模的扩大,数据库性能瓶颈往往成为制约因素。本文将探讨一系列行之有效的MySQL性能优化策略,确保您的应用在高负载下依然保持高效响应。我们将结合实际案例,深入讲解索引、查询优化、数据库设计以及缓存等关键技术。1.数据库架构设计优化合理的数据库架构是MySQL性能优化的基石。以下是一些核心原则:选择合适的数据类型选择最小的、符合需求的数据类型,既能节省存储空间,又能提升数据处理速度

MySQL性能优化需从安装配置、索引及查询优化、监控与调优三个方面入手。1.安装后需根据服务器配置调整my.cnf文件,例如innodb_buffer_pool_size参数,并关闭query_cache_size;2.创建合适的索引,避免索引过多,并优化查询语句,例如使用EXPLAIN命令分析执行计划;3.利用MySQL自带监控工具(SHOWPROCESSLIST,SHOWSTATUS)监控数据库运行状况,定期备份和整理数据库。通过这些步骤,持续优化,才能提升MySQL数据库性能。

MySQL 可在无需网络连接的情况下运行,进行基本的数据存储和管理。但是,对于与其他系统交互、远程访问或使用高级功能(如复制和集群)的情况,则需要网络连接。此外,安全措施(如防火墙)、性能优化(选择合适的网络连接)和数据备份对于连接到互联网的 MySQL 数据库至关重要。

对于生产环境,通常需要一台服务器来运行 MySQL,原因包括性能、可靠性、安全性和可扩展性。服务器通常拥有更强大的硬件、冗余配置和更严格的安全措施。对于小型、低负载应用,可在本地机器运行 MySQL,但需谨慎考虑资源消耗、安全风险和维护成本。如需更高的可靠性和安全性,应将 MySQL 部署到云服务器或其他服务器上。选择合适的服务器配置需要根据应用负载和数据量进行评估。

直接通过 Navicat 查看 MongoDB 密码是不可能的,因为它以哈希值形式存储。取回丢失密码的方法:1. 重置密码;2. 检查配置文件(可能包含哈希值);3. 检查代码(可能硬编码密码)。

HadiDB:轻量级、高水平可扩展的Python数据库HadiDB(hadidb)是一个用Python编写的轻量级数据库,具备高度水平的可扩展性。安装HadiDB使用pip安装:pipinstallhadidb用户管理创建用户:createuser()方法创建一个新用户。authentication()方法验证用户身份。fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.
