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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

golangisidealforbuildingscalablesystemsdueToitsefficiencyandconcurrency

Laravel은 팀이 PHP에 익숙하고 풍부한 기능이 필요한 프로젝트에 적합하지만 Python 프레임 워크는 프로젝트 요구 사항에 따라 다릅니다. 1. Laravel은 빠른 개발과 유연성이 필요한 프로젝트에 적합한 우아한 구문 및 풍부한 기능을 제공합니다. 2. Django는 "배터리 포함"개념으로 인해 복잡한 응용 프로그램에 적합합니다. 3. 플라스크는 빠른 프로토 타입과 소규모 프로젝트에 적합하여 유연성이 뛰어납니다.

IIS 및 PHP는 호환 가능하며 FastCGI를 통해 구현됩니다. 1. IIS 구성 파일을 통해 .php 파일 요청을 FastCGI 모듈로 전달합니다. 2. FASTCGI 모듈은 PHP 프로세스를 시작하여 요청을 처리하여 성능과 안정성을 향상시킵니다. 3. 실제 응용 프로그램에서는 구성 세부 사항, 오류 디버깅 및 성능 최적화에주의를 기울여야합니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

Python 프로젝트의 계층 구조에 대한 토론 Python 학습 과정에서 많은 초보자는 일부 오픈 소스 프로젝트, 특히 Django 프레임 워크를 사용한 프로젝트와 접촉 할 것입니다 ...

Python 또는 C를 선택하는 것은 프로젝트 요구 사항에 따라 다릅니다. 1) 빠른 개발, 데이터 처리 및 프로토 타입 설계가 필요한 경우 Python을 선택하십시오. 2) 고성능, 낮은 대기 시간 및 근접 하드웨어 제어가 필요한 경우 C를 선택하십시오.
