17
2020
03

dedecms实现自定义表单发送邮件的方法

网上有不少dede cms的提交自定义表单发送邮件的功能,看上去很简单,但实际操作起来就不少问题。首先网站大部分帖子清一色其实就是一个方法,如果是支持它这个功能的主机的话,那没啥问题,但如果碰上不支持这个方法的虚拟主机(比如 万网的虚拟主机),调试个半天都没反应。

然后阿里云的论坛提供了不少调用fsockopen的方法,但测试了n次,依旧不行。在快要绝望的时候,在Specs' Blog的文章里发现了一个利用程序自动的mail_send.php的方法,然后结合之前的后台设置,成功实现了提交自定义表单发送对应信息给指定邮箱。

方法如下:

一、首先设置dede后后台

进入dede后台,系统,系统基本参数,核心设置,配置好邮箱发信的信息. 

1、是否启用smtp方式发送邮件:是. 

2、smtp服务器: smtp.126.com (这里推荐网易邮箱,实测出现问题的概率比较小) 

3、smtp服务器端口: 25 (一般这个不需要可以去修改改变.默认为:25) 

4、SMTP服务器的用户邮箱: xxxxx@126.com (这里填写完整的邮箱地址) 

5、SMTP服务器的用户帐号: ethnicitybeta (这里填写邮箱开头的账户也就是用户名) 

7、SMTP服务器的用户密码: 123456 (密码就不用多说了) 

二、修改/plus/diy.php文件(记得备份)

首先打开 /plus/diy.php ,把下面的代码

//邮件发送函数function sendmail($email, $mailtitle, $mailbody){global $cfg_sendmail_bysmtp, $cfg_smtp_server, $cfg_smtp_port, $cfg_smtp_usermail, $cfg_smtp_user, $cfg_smtp_password, $cfg_adminemail,$cfg_webname;if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server)){ $mailtype = 'HTML'; require_once(DEDEINC.'/mail.class.php'); $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password); $smtp->debug = false;if(!$smtp->smtp_sockopen($cfg_smtp_server)){ShowMsg('邮件发送失败,请联系管理员','-1');exit();} $smtp->sendmail($email,$cfg_webname,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);}else{@mail($email, $mailtitle, $mailbody, $headers);}}

放到

require_once(dirname(__FILE__)."/../include/common.inc.php");

的下面。

然后把

$email = "xxx@126.com";  //这里填写要发送到的邮箱

$mailtitle = "邮件标题";

$mailbody = "

类别:{$p_pname}<br />

申请类型:{$p_pnames}<br />

姓名:{$p_name}<br />

电话:{$p_tel}<br />

邮箱:{$p_mail}<br />

城市:{$p_city}<br />

行业:{$p_xm}<br />

提交时间:{$p_time}<br />

需求:{$p_info}<br />

";

sendmail($email, $mailtitle, $mailbody);

放到

$id = $dsql->GetLastID();

的上面,保存文件。

其中$mailbody为邮件内容,根据你的自定义表单的id或name来修改。

三、上传文件,提交测试

原文链接:https://www.qiquanji.com/post/7220.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。