花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

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

時(shí)間: 2018-12-04 09:28 閱讀: 作者:素材無憂網(wǎng)

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

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

 

QQ篇

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

 圖片.png

 

開啟成功后是這樣的

 圖片.png

 

163郵箱篇

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

 圖片.png

 

這里提示也是要開啟授權(quán)碼的

 圖片.png

 圖片.png

 圖片.png

 

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

 圖片.png

 

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

 

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

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

如果你是用官方程序的發(fā)送郵件函數(shù),那你的主機(jī)要開啟fsockopen pfsockopen

檢查是否開啟

echo(function_exists("fsockopen"));

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

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

但是關(guān)閉fsockopen pfsockopen函數(shù)sendmail發(fā)郵件不成功怎么辦?

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

具體操作方法:

搜索程序中的字符串 fsockopen( 替換為 stream_socket_client( ,然后,將原fsockopen函數(shù)中的端口參數(shù)“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);

這樣郵件就可以正常發(fā)送了!

 圖片.png

 

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

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

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

 圖片.png

 

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

$id = $dsql->GetLastID();

在它的前面一行加入

 

//郵件發(fā)送開始
$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包含避免出現(xiàn)PHPMailer類重復(fù)定義的警告
require_once("class.phpmailer.php"); 
require_once("class.smtp.php");
//實(shí)例化PHPMailer核心類
$mail = new PHPMailer();
 
//是否啟用smtp的debug進(jìn)行調(diào)試 開發(fā)環(huán)境建議開啟 生產(chǎn)環(huán)境注釋掉即可
 默認(rèn)關(guān)閉debug調(diào)試模式
$mail->SMTPDebug = 1;
 
//使用smtp鑒權(quán)方式發(fā)送郵件
$mail->isSMTP();
 
//smtp需要鑒權(quán) 這個(gè)必須是true
$mail->SMTPAuth=true;
 
//鏈接qq域名郵箱的服務(wù)器地址
$mail->Host = $cfg_smtp_server;
 
//設(shè)置使用ssl加密方式登錄鑒權(quán)
$mail->SMTPSecure = 'ssl';
 
//設(shè)置ssl連接smtp服務(wù)器的遠(yuǎn)程服務(wù)器端口號,以前的默認(rèn)是25,
但是現(xiàn)在新的好像已經(jīng)不可用了 可選465或587
$mail->Port = $cfg_smtp_port;
 
//設(shè)置smtp的helo消息頭 這個(gè)可有可無 內(nèi)容任意
// $mail->Helo = 'Hello smtp.qq.com Server';
 
//設(shè)置發(fā)件人的主機(jī)域 可有可無 默認(rèn)為localhost 內(nèi)容任意,建議使用你的域名
$mail->Hostname = $cfg_basehost;
 
//設(shè)置發(fā)送的郵件的編碼 可選GB2312 我喜歡utf-8 據(jù)說utf8在某些客戶端收信下會(huì)亂碼
$mail->CharSet = 'UTF-8';
 
//設(shè)置發(fā)件人姓名(昵稱) 任意內(nèi)容,顯示在收件人郵件的發(fā)件人郵箱地址前的發(fā)件人姓名
$mail->FromName = $cfg_smtp_user;
 
//smtp登錄的賬號 這里填入字符串格式的qq號即可
$mail->Username = $cfg_smtp_usermail;
 
//smtp登錄的密碼 使用生成的授權(quán)碼(就剛才叫你保存的最新的授權(quán)碼)
$mail->Password = $cfg_smtp_password;
 
//設(shè)置發(fā)件人郵箱地址 這里填入上述提到的“發(fā)件人郵箱”
$mail->From = $cfg_smtp_usermail;
 
//郵件正文是否為html編碼 注意此處是一個(gè)方法 不再是屬性 true或false
$mail->isHTML(true); 
 
//設(shè)置收件人郵箱地址 該方法有兩個(gè)參數(shù) 第一個(gè)參數(shù)為收件人郵箱地址 第二參數(shù)為給該地址設(shè)置的昵稱
 不同的郵箱系統(tǒng)會(huì)自動(dòng)進(jìn)行處理變動(dòng) 這里第二個(gè)參數(shù)的意義不大
$mail->addAddress($cfg_email,$cfg_smtp_user);
 
//添加多個(gè)收件人 則多次調(diào)用方法即可
// $mail->addAddress('[email protected]','lsgo在線通知');
 
//添加該郵件的主題
$mail->Subject = $diy->name;
 
//添加郵件正文 上方將isHTML設(shè)置成了true,則可以是完整的html字符串
 如:使用file_get_contents函數(shù)讀取本地的html文件
$mail->Body = $emailbody;
 
//為該郵件添加附件 該方法也有兩個(gè)參數(shù) 第一個(gè)參數(shù)為附件存放的目錄
(相對目錄、或絕對目錄均可) 第二參數(shù)為在郵件附件中該附件的名稱
// $mail->addAttachment('./d.jpg','mm.jpg');
//同樣該方法可以多次調(diào)用 上傳多個(gè)附件
// $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;  
}
//郵件發(fā)送結(jié)束

 

測試自定義表單提交效果

圖片.png

圖片.png

 

版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!

轉(zhuǎn)載請注明: 織夢dedecms提交自定義表單后發(fā)送到指定郵箱

標(biāo)簽:  
相關(guān)文章
模板推薦