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(" ", $mailer->errors)); } } else { $this->show_warning(`Hacking Attempt`); } }
tls方式沒有測試過。
相關文章
- MySQL 5.7配置SSL連線MySql
- 郵件伺服器配置和管理伺服器
- 郵件伺服器如何搭建的伺服器
- mailx 使用ssl郵件傳送配置 2018-12-28AI
- Linux伺服器---郵件伺服器openwebmail配置Linux伺服器WebAI
- 如何在CentOS中安裝和配置Postfix郵件伺服器CentOS伺服器
- Linux伺服器---郵件服務postfix配置Linux伺服器
- NGINX配置SSL支援Nginx
- 伺服器配置ssl證書支援蘋果ATS方法 – HTTPS SSL 教程伺服器蘋果HTTP
- 如何在 CentOS 8 上安裝和配置 Postfix 郵件伺服器CentOS伺服器
- Laravel 郵件配置Laravel
- seafile QQ郵件的配置
- 如何在Mac郵件客戶端配置使用S/MIME郵件證書Mac客戶端
- 如何在極狐GitLab 配置 郵件功能Gitlab
- 基於 Apaache 的 laravel-websocket SSL配置(wss連線)LaravelWeb
- zabbix配置郵件告警
- 聊聊郵件伺服器伺服器
- 郵件客戶端的配置使用客戶端
- laravel 傳送郵件 使用ssl 報錯為:" stream_socket_client(): SSL :"Laravelclient
- win10 如何找到郵件顯示配置檔案 window10怎麼檢視郵件配置檔案Win10
- 電子郵件成“重災區”,如何有效防禦接連不斷的電子郵件攻擊
- spring boot配置QQ郵箱傳送郵件Spring Boot
- 谷歌郵箱,配置傳送郵件密碼谷歌密碼
- 利用godaddy的cpanel郵箱伺服器的smtp發郵件Go伺服器
- Gitlab伺服器郵箱配置,實現自動為使用者傳送郵件(註冊傳送驗證連結)Gitlab伺服器
- prometheus配置MySQL郵件報警PrometheusMySql
- Alertmanager傳送告警郵件配置
- 為GitLab配置郵件服務Gitlab
- PbootCMS郵件配置修改發件人資訊boot
- Nginx上游伺服器長連線配置Nginx伺服器
- Linux伺服器---郵件伺服器dovecotLinux伺服器
- 使用 Apache 反向代理來配置 Laravel-Websocket SSL(WSS 連線)ApacheLaravelWeb
- raksmart伺服器搭建公司郵件的方法伺服器
- MySQL SSL連線問題MySql
- 如何快速讓MySQL資料庫伺服器支援遠端連線MRMySql資料庫伺服器
- 自己的電腦怎麼連線伺服器 電腦如何連線伺服器伺服器
- 什麼是郵件伺服器伺服器
- 自建外網郵件伺服器伺服器
- 郵件伺服器安全SPF、DKIM伺服器