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
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知