国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 織夢DEDE > 正文

織夢dedecms提交自定義表單后發送到指定郵箱

2024-07-12 09:01:00
字體:
來源:轉載
供稿:網友

網上很多教程都是用dedecms自帶的郵件庫發送郵件,而且是寫死要發送的字段內容,今天我們用phpmailer來給站長發送自定義表單提交的數據到指定郵箱上(QQ郵箱,163郵箱都可以),不寫死任何東西,有什么字段就提交發送什么字段。

操作之前,我們要先搞定用來發送郵件的那個郵箱,說白了就是要開啟SMTP。

 

QQ篇

登錄QQ郵箱-設置-賬戶,找到POP3/IMAP/SMTP,開啟,現在的郵箱開啟POP3/SMTP都要授權碼了,千萬要記下你的授權碼啊,等一下是作為密碼使用的。

 圖片.png

 

開啟成功后是這樣的

 圖片.png

 

163郵箱篇

163郵箱開啟POP3/IMAP/SMTP 也是要授權碼的,他是自定義的,不能跟郵箱的密碼一樣,所以千萬要記得自己設置的授權碼,一會用到它

 圖片.png

 

這里提示也是要開啟授權碼的

 圖片.png

 圖片.png

 圖片.png

 

根據自己郵箱開啟POP3/IMAP/SMTP,接下來我們來設置后臺,認真看下圖紅色圈著的,一個都不能少

 圖片.png

 

郵箱和后臺都OK后,我們開始用上phpmailer。

 

PHPMailer項目地址:https://github.com/PHPMailer/PHPMailer 使用git命令克隆到本地,或直接在該項目頁面的右下方點擊“ Download ZIP ”即可獲取到完整的PHPMailer代碼包,再到本地解壓即可。

PHPMailer需PHP的socket擴展支持,而PHPMailer鏈接qq域名郵箱時需要ssl加密方式,固php還得openssl的支持,可以查看phpinfo,如下兩項均存在則可以使用,其中openssl版本號之類不用管;許多虛擬主機中的php是不支持openssl擴展的,那你可能就悲劇了。

如果你是用官方程序的發送郵件函數,那你的主機要開啟fsockopen pfsockopen

檢查是否開啟

echo(function_exists("fsockopen"));

輸出1,就是開啟了,0就是沒開啟。

出于安性考慮,空間商通常會將fsockopen pfsockopen函數禁用,以防黑客入侵

但是關閉fsockopen pfsockopen函數sendmail發郵件不成功怎么辦?

我們可以用其他函數代替,如stream_socket_client()。

具體操作方法:

搜索程序中的字符串 fsockopen( 替換為 stream_socket_client( ,然后,將原fsockopen函數中的端口參數“80”刪掉,并加到$host。

 

示例如下:

修改前:

   $fp = fsockopen($host, 80, $errno, $errstr, 30);

   或

   $fp = fsock

修改后:

   $fp = stream_socket_client('tcp://'.$host.'80', $errno, $errstr, 30);

   或

   $fp = stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $connection_timeout);

這樣郵件就可以正常發送了!

 圖片.png

 

由于我們下載下來的PHPMailer文件夾里邊的文件有很多我們是用不上的,所以我們也沒必要浪費這些內存。我們可以對這個文件夾瘦身,在這里我只保存 了以下的幾個文件:

class.phpmailer.php、class.phpmaileroauth.php、class.pop3.php、 class.smtp.php、PHPMailerAutoload.php

把這5個php文件放到你dedecms程序plus文件夾下

 圖片.png

 

最后一步,打開/plus/diy.php,找到

$id = $dsql->GetLastID();

在它的前面一行加入

 

//郵件發送開始$fieldlist = $diy->getFieldList();$addvalue_ary1  = explode(',', $addvalue);$addvalue_ary = array_filter($addvalue_ary1);$i = 1;foreach($fieldlist as $field=>$fielddata){    $emailbody .= $fielddata[0].':'.$addvalue_ary[$i].'<br />';       $i ++;}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 = 1; //使用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_email,$cfg_smtp_user); //添加多個收件人 則多次調用方法即可// $mail->addAddress('xxx@163.com','lsgo在線通知'); //添加該郵件的主題$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;  }//郵件發送結束

 

測試自定義表單提交效果

圖片.png

圖片.png

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖南省| 刚察县| 察雅县| 古蔺县| 安达市| 湛江市| 泽州县| 克山县| 阳江市| 咸丰县| 乳源| 临潭县| 宽甸| 东宁县| 阜新市| 青川县| 永胜县| 建平县| 许昌县| 屏边| 梁山县| 买车| 乾安县| 安丘市| 双桥区| 黄骅市| 大洼县| 莎车县| 休宁县| 绥德县| 静宁县| 铁力市| 隆化县| 微博| 谷城县| 芷江| 湟中县| 东方市| 东方市| 金华市| 通州市|