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

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

前面我已经分享过一篇 《使用DEDE织梦自带的邮件功能实现自定义表单邮件通知》的文章,这里再介绍另一种方法,其实跟前一篇的原理是一样的~

前一篇我们是直接把发送邮件的函数拷贝到 /plus/diy.php 文件中,这一篇我们通过声明 smtp 类来实现发送邮件通知的功能,下面上代码:

global $cfg_smtp_server, $cfg_adminemail, $cfg_smtp_port, $cfg_smtp_usermail, $cfg_smtp_password, $cfg_webname;
$to_email = $cfg_adminemail;	//收件人Email,可自行替换
$mailtitle = "测试邮件标题";    //自行设置
$mailbody = "测试邮件内容";    //自行设置
$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;
$smtp->sendmail($to_email, $cfg_webname, $cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);

把上面的代码放入到 /plus/diy.php 文件的 $id = $dsql->GetLastID(); 语句上面,然后保存即可。

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

填写自定义表单,然后点击“提交”,到邮箱看看是否收到类似下面的邮件了呢?

dede_email_2

如果没有的话,请到 这篇文章 的最下面找找相应原因。

有些朋友可能会问,我想把表单中的一些内容也发送到邮箱中,这里应该怎么写呢?其实很简单,只需要修改下 $mailbody 即可。

怎么传值?直接 $ 符号加你表单中字段的名字即可。比如表单中一个 <input name="title" />的字段,我想把 title 的值放到 $mailbody 中,只需要在你需要显示的位置写上 $title 即可获取 title 的值了。如: $mailbody = "表单中title的值为".$title;

本文共 22 个回复

  • 阿张 2014/08/10 01:06

    我那asp的,测试了几次,还收到的回复邮箱里,有:“你可以点击 查看完整内容”本来这一句点击后会回到当前回复的文章页面,但怎么点都没反应……

  • 大海 2014/08/13 15:10

    测试成功,既可以给自己发邮件通知,也可以改成表单提交者邮箱发送邮件。但是两者不能同时都发送,请问提交表单时如何实现两者都能同时发送邮件?

    • Specs 2014/08/13 15:13

      @ 大海 可以吧,你试下把收件邮箱那里下两个邮箱,用逗号或者分号分割,不行的话试下调用两个这个函数~

  • 大海 2014/08/13 15:34

    怎么测试也不成功,只能发送到一个邮箱,无法实现两个邮箱同时发送,请帮忙分析下。

    • Specs 2014/08/13 15:36

      @ 大海 $smtp->sendmail 这个函数执行两次,修改 $to_mail,其他不变不行吗?不行的话晚上回去了我再看看,没试过发送到两个邮箱。现在上班,不方便试~

  • 大海 2014/08/13 16:57

    按你说的测试成功了,非常感谢。只是两个网站都是织梦的一个成功另一个 无论怎么调试也不发邮件 那个邮箱也不发,真是纳闷,我再排查一下吧

    • Specs 2014/08/13 17:11

      @ 大海 你可以看看我前一篇文章里写的可能收不到邮件的原因,如果都没问题,你可以试着把那个后台“启用SMTP服务”那里选“否”再试试~其他情况目前我也没遇到过~

  • 大海 2014/08/13 17:47

    不成功的那个估计是因为当时做网站的时候先做了一个站,然后图省事把做好的这个站的整个文件复制到另外一个虚拟主机安装的。我又重新装了个全新的织梦程序 测试也都成功。 按你说的也都弄了下还是不行 看来情况比较复杂了。

  • guh27980 2015/01/03 11:05

    您好,感謝您的分享! 我其實已經試了很多方法,可是無法寄信到我的信箱不知道甚麼原因! 端口問題 設置問題?可否跟你要一下QQ 討教一下?

  • guh27980 2015/01/03 11:10

    實際情況是: 如果我port 輸入 25時, 會正常轉跳,但是不會寄信到我信箱打其他port時,就會出現,我用的是QQ 帳號Network Error (tcp_error) A communication error occurred: "Operation timed out"The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.For assistance, contact your network support team.

  • 大神能否把您的文章搬到百度知道上 2015/01/15 09:34

    会写上引用网址和您的名字,小弟纯粹为了百度知道的任务

  • ishnan 2015/03/12 11:29

    邮件发送成功,[$mailbody = "表单中title的值为".$title; //自行设置]表单怎么传送多行,另外加上验证码的方法有么?

  • bwuo 2015/05/11 10:37

    如何监控不同的表单呢?比如我这个网站有2个以上表单,根据提交的表单不同尔选择不同的邮件内容,怎么设置呢

12

发表评论