首页 » 开源/框架 » DEDE » 正文

使用DEDECMS织梦自带的邮件功能实现自定义表单邮件通知

用DEDECMS(织梦)做开发的时,有些客户可能要求自定义表单提交后向指定邮箱发送邮件通知这样的功能。我搜索了一下,网上的代码基本都是一样的,就是使用 PHPMailer 来实现。但其实DEDE本身就已经带有了邮件功能,为什么我们还要借助 PHPMailer 来实现呢?今天就来给大家分享下如何使用DEDE自带邮件功能为自定义表单添加邮件通知功能。

其实前面已经分享过一篇《使用DEDE织梦自带的邮件功能发送邮件》的文章,这篇文章可以说是前一篇的增强版,所以我们这里只写一下实现方法,更多内容请查看前一篇文章。

首先打开 /plus/diy.php ,把下面的代码(在 /dede/mail_send.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 = "****";  //这里填写要发送到的邮箱
$mailtitle = "邮件标题";
$mailbody = "邮件内容";
sendmail($email, $mailtitle, $mailbody);

放到

$id = $dsql->GetLastID();

的上面,保存文件。

登录后台配置好邮件发送服务(方法见 这里),然后测试下是不是已经可以了~

效果如下:

DEDE邮件发送服务

 

最近添加了一个新的方法《使用DEDE织梦自带的邮件功能实现自定义表单邮件通知(方法二)》,大家也可以参考一下。

友情提示:有些朋友反应按这篇文章做了,但是还是收不到邮件提示,可能是以下几种原因,请认真检查下

1、后台没有配置SMTP服务,配置方法看这篇文章的后面;

2、其次可能是配置不对,建议大家别用QQ邮箱,因为很多QQ邮箱确实收不到邮件,不清楚什么原因;推荐使用 163或126邮箱,这个一般都没问题;SMTP服务器为 smtp.126.com或smtp.163.com,端口是 25,QQ的端口好像是465。

3、如果以上都没问题,也可能是你的空间或服务器不支持邮件发送功能,请询问服务商。

4、上面都没问题,但还是不行的话大家可以问我~~

本文共 63 个回复

  • 小义 2014/04/25 14:02

    前来支持

    • Specs 2014/04/25 14:04

      @ 小义 我这有点问题啊,把页面的评论关闭了,但是还是能出现多说评论框,本地测试没问题。。会是哪里出问题了?

  • 天官赐福 2014/05/01 15:58

    我按照所述的修改,顯示提交成功但郵件卻重未收到。是怎麼回事,可以幫幫忙嗎?

    • Specs 2014/05/01 22:04

      @ 天官赐福 后台那里设置了吗?

      • 天官赐福 2014/05/01 23:06

        @ Specs 設置了smtp服务器:mail.laaayuan.comsmtp服务器端口:25SMTP服务器的用户邮箱:service@laaayuan.comSMTP服务器的用户帐号:service@laaayuan.comSMTP服务器的用户密码:*********我使用的是美國LINUX虛擬主機

        • Specs 2014/05/02 22:32

          @ 天官赐福 额 这个laaayuan的是? 可能它那个端口不是25吧。我试了 126 163 QQ的都没问题呀。你那个注册的时候邮件能发出去吗? 我觉得是这个有问题。

          • 天官赐福 2014/05/03 00:51

            @ Specs laaayuan.com這個端口也是25我郵件都可以正常收發。

          • 天官赐福 2014/05/03 00:54

            @ Specs smtp服务器:smtp.163.comsmtp服务器端口:25SMTP服务器的用户邮箱:ff3w3d@163.comSMTP服务器的用户帐号:ff3w3dSMTP服务器的用户密码:*********我使用的是美國LINUX虛擬主機163是這樣設置沒錯吧!但我這樣設置提交表單後發送失敗。

            • Specs 2014/05/03 12:01

              @ 天官赐福 加一下吧 没收到

              • 天官赐福 2014/05/07 21:55

                @ Specs 上面代碼完全正確可以收發正常了,之前收到的自己郵箱是將字段名和發送EMAIL的變量名設置相同了。經過Specs指導,現在已經正常可以使用了。謝謝!

      • 天官赐福 2014/05/02 23:50

        @ Specs 我也換了163.com的郵箱都不行,有甚麼解決的方法嗎?我有家您的QQ,可以的話請幫忙一下。

      • 天官赐福 2014/05/02 23:51

        @ Specs 我也換了163.com的郵箱都不行,有甚麼解決的方法嗎?我有加您的QQ,可以的話請幫忙一下,好嗎?

  • 新的一天 2014/05/08 09:45

    我按照所述的修改,顯示提交成功但郵件卻重未收到,能帮看看么

    • Specs 2014/05/08 09:53

      @ 新的一天 把上面的代码放进去之后,还要配置后台的邮件发送功能。需要这两步,我这两天在家里,不能电脑上网~

  • tonyzhong 2014/05/22 19:00

    我按照所述的修改,顯示提交成功但郵件卻重未收到,能帮看看么

  • 菜鸟 2014/06/24 18:19

    为什么我按你的步骤做下来没反映!!

  • 菜鸟 2014/06/24 18:20

    为什么我按你的步骤做下来没反映!! :evil:

    • Specs 2014/06/24 19:33

      @ 菜鸟 应该没问题的啊 你配置后台邮件那里了吗

  • 菜鸟 2014/06/24 19:59

    QQ群怎么加不进去啊

  • 前来感谢大神 2015/01/15 09:07

    多谢大神的指点,小弟搞明白了

  • 小孟 2015/04/29 15:25

    怎么对邮件里的内容进行编辑比如换行之类的 :cry:

    • Specs 2015/04/29 20:25

      @ 小孟 填写表单的时候编辑啊。

      • 小孟 2015/04/30 11:44

        @ Specs 你理解错我的意思了,我的意思是$mailbody = "邮件内容";这个参数传的值,我这里面有多个属性,$1$2,怎么让$1内容显示完成以后$2换行显示,在邮件内容里

        • Specs 2015/04/30 11:47

          @ 小孟 你试试用
          或者 \n 链接 $a 和 $b,比如 $a . '\n' . $b。好像是用 \n。

  • zheng 2015/08/04 15:58

    我用这个方法成功了,第一次邮箱收到了邮件,之后怎么发都收不到,是怎么回事

    • Specs 2015/08/04 21:37

      @ zheng 第一次能说明已经可以了的啊。。至于后面不行,看看是不是修改了什么或者邮件被阻止了?

123

发表评论