代理加盟 2020全新代理計劃 賺錢+省錢雙管齊下,獨立平臺,豐厚利潤!

您現在的位置: 秀站網 > 織夢大學 > 使用教程 >

DedeCMS在IIS下自定義表單發送到QQ郵箱

來源:本站原創 發布時間:2019-03-30 00:00:00熱度:我要評論(0

免費下載,無需注冊無需充值

        DedeCMS自定義表單提交后發送到指定郵箱的功能需要二次開發,但目前的許多方法都是寫死字段,而且站長郵箱不能批量給多個郵箱發布,用起來不太人性化。下面提供能同時給多個QQ郵箱和163郵箱的方法。

織夢自定義表單發送通知到QQ郵箱

相關準備

1、郵箱設置

        QQ郵箱和163郵箱都支持POP3,開啟方法參考文章《DedeCMS表單提交發送到指定郵箱與前臺設置》。

這里要注意的是

1)smtp服務器的用戶密碼是授權碼而不是郵箱密碼;

2)smtp服務器端口應填465,貌似25端口會出問題,沒測試過。

2、第三方郵件工具

        下載PHPMailer,下載地址

https://pan.baidu.com/s/1pLGC18v  密碼: f8a4

        把里面的四個文件放在/plus/文件夾下即可。

3、新增變量,收件人郵箱,可根據實際情況增加多個,不同的變量名即可

變量名稱:cfg_shoujianren     //其他的可命名為cfg_shoujianrena
變量值: 指定的收件人郵箱地址 //如:[email protected]
變量類型:文本
參數說明:收件人一
所屬組:站點設置

增加郵件發送

        打開plus/diy.php,找到

$id = $dsql->GetLastID();

        在它的前面一行加入

//郵件發送開始
$emailbody = '';
foreach($diy->getFieldList() as $field=>$fieldvalue)
{
	$emailbody .= $fieldvalue[0].':'.${$field}.'<br />';
}
global $cfg_smtp_server, $cfg_adminemail, $cfg_smtp_port, $cfg_smtp_usermail, $cfg_smtp_password, $cfg_webname, $cfg_basehost, $cfg_smtp_user;

//引入PHPMailer的核心文件 使用require_once包含避免出現PHPMailer類重復定義的警告
require_once("class.phpmailer.php"); 
require_once("class.smtp.php");
//實例化PHPMailer核心類
$mail = new PHPMailer();

//是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 默認關閉debug調試模式
$mail->SMTPDebug = 0;

//使用smtp鑒權方式發送郵件
$mail->isSMTP();

//smtp需要鑒權 這個必須是true
$mail->SMTPAuth=true;

//鏈接qq域名郵箱的服務器地址
$mail->Host = $cfg_smtp_server;

//設置使用ssl加密方式登錄鑒權
$mail->SMTPSecure = 'ssl';

//設置ssl連接smtp服務器的遠程服務器端口號,以前的默認是25,但是現在新的好像已經不可用了 可選465或587
$mail->Port = $cfg_smtp_port;

//設置smtp的helo消息頭 這個可有可無 內容任意
// $mail->Helo = 'Hello smtp.qq.com Server';

//設置發件人的主機域 可有可無 默認為localhost 內容任意,建議使用你的域名
$mail->Hostname = $cfg_basehost;

//設置發送的郵件的編碼 可選GB2312 我喜歡utf-8 據說utf8在某些客戶端收信下會亂碼
$mail->CharSet = 'UTF-8';

//設置發件人姓名(昵稱) 任意內容,顯示在收件人郵件的發件人郵箱地址前的發件人姓名
$mail->FromName = $cfg_smtp_user;

//smtp登錄的賬號 這里填入字符串格式的qq號即可
$mail->Username = $cfg_smtp_usermail;

//smtp登錄的密碼 使用生成的授權碼(就剛才叫你保存的最新的授權碼)
$mail->Password = $cfg_smtp_password;

//設置發件人郵箱地址 這里填入上述提到的“發件人郵箱”
$mail->From = $cfg_smtp_usermail;

//郵件正文是否為html編碼 注意此處是一個方法 不再是屬性 true或false
$mail->isHTML(true); 

//設置收件人郵箱地址 該方法有兩個參數 第一個參數為收件人郵箱地址 第二參數為給該地址設置的昵稱 不同的郵箱系統會自動進行處理變動 這里第二個參數的意義不大
$mail->addAddress($cfg_shoujianren,$cfg_smtp_user);

//添加多個收件人 則多次調用方法即可,如下
// $mail->addAddress('$cfg_shoujianren2','$cfg_smtp_user');

//添加該郵件的主題
$mail->Subject = $diy->name;

//添加郵件正文 上方將isHTML設置成了true,則可以是完整的html字符串 如:使用file_get_contents函數讀取本地的html文件
$mail->Body = $emailbody;

//為該郵件添加附件 該方法也有兩個參數 第一個參數為附件存放的目錄(相對目錄、或絕對目錄均可) 第二參數為在郵件附件中該附件的名稱
// $mail->addAttachment('./d.jpg','mm.jpg');
//同樣該方法可以多次調用 上傳多個附件
// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');

if(!$mail->send())  
{  
	echo "Fail to send. <p>";  
	echo "Cause of the error: " . $mail->ErrorInfo;  
	exit;  
}
//郵件發送結束

其他問題

        發現IIS有些沒有OpenSLL和Sockets,導致不能正常發送郵件,可以在根目錄新建一個文件名為test.php的文件,內容如下

<?php
phpinfo();
?>

        在瀏覽器輸入:http://域名/test.php ,如下圖所示

IIS sockets

↑Sockets Support值為enabled

IIS openSSL

↑OpenSSL support值為enabled

        如果不是這兩個值,就有兩種可能,沒有開通或者缺失。

1、 首先檢查php.ini中,下面字段是否存在

;extension=php_openssl.dll

         如果存在的話去掉前面的注釋符";", 如果不存在這行,那么添加extension=php_openssl.dll。

2、如果沒有 php_openssl.dll ,點擊下載 php_openssl.dll

        下載下來有很多個php_openssl,找到你相應php版本下面的php_openssl。

查看php版本

3、 重啟Apache或者IIS

        至此,OpenSSL功能就開啟了。

轉載請注明來源網址:http://www.yxrxyy.live/dedecms_jq/1306.html

    發表評論

    評論列表(條)

      北京28是什么彩票