最新公告
  • 欢迎您光临牛气网,本站秉承“用心服务,做好服务”致力为站长提供优质的售后服务!立即加入我们
  • 织梦dedecms提交自定义表单后发送到指定邮箱

    网上很多教程都是用dedecms自带的邮件库发送邮件,而且是写死要发送的字段内容,今天我们用phpmailer来给站长发送自定义表单提交的数据到指定邮箱上(QQ邮箱,163邮箱都可以),不写死任何东西,有什么字段就提交发送什么字段。

    操作之前,我们要先搞定用来发送邮件的那个邮箱,说白了就是要开启SMTP。

    QQ篇

    登录QQ邮箱-设置-账户,找到POP3/IMAP/SMTP,开启,现在的邮箱开启POP3/SMTP都要授权码了,千万要记下你的授权码啊,等一下是作为密码使用的。

    开启成功后是这样的

    163邮箱篇

    163邮箱开启POP3/IMAP/SMTP也是要授权码的,他是自定义的,不能跟邮箱的密码一样,所以千万要记得自己设置的授权码,一会用到它

    这里提示也是要开启授权码的

    根据自己邮箱开启POP3/IMAP/SMTP,接下来我们来设置后台,认真看下图红色圈着的,一个都不能少

    邮箱和后台都OK后,我们开始用上phpmailer。

    PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer使用git命令克隆到本地,或直接在该项目页面的右下方点击“Download ZIP”即可获取到完整的PHPMailer代码包,再到本地解压即可。

    PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式,固php还得openssl的支持,可以查看phpinfo,如下两项均存在则可以使用,其中openssl版本号之类不用管;许多虚拟主机中的php是不支持openssl扩展的,那你可能就悲剧了。

    如果你是用官方程序的发送邮件函数,那你的主机要开启fsockopen pfsockopen

    检查是否开启

    echo(function_exists("fsockopen"));

    输出1,就是开启了,0就是没开启。

    出于安性考虑,空间商通常会将fsockopen pfsockopen函数禁用,以防黑客入侵

    但是关闭fsockopen pfsockopen函数sendmail发邮件不成功怎么办?

    我们可以用其他函数代替,如stream_socket_client()。

    具体操作方法:

    搜索程序中的字符串fsockopen(替换为stream_socket_client(,然后,将原fsockopen函数中的端口参数“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);

    这样邮件就可以正常发送了!

    由于我们下载下来的PHPMailer文件夹里边的文件有很多我们是用不上的,所以我们也没必要浪费这些内存。我们可以对这个文件夹瘦身,在这里我只保存了以下的几个文件:

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

    把这5个php文件放到你dedecms程序plus文件夹下

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

    $id = $dsql->GetLastID();

    在它的前面一行加入

    //邮件发送开始
    $fieldlist=$diy->getFieldList();
    $addvalue_ary1=explode(',',$addvalue);
    $addvalue_ary=array_filter($addvalue_ary1);
    $i=1;
    foreach($fieldlistas$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包含避免出现PHPMailer类重复定义的警告
    require_once("class.phpmailer.php");
    require_once("class.smtp.php");
    //实例化PHPMailer核心类
    $mail=newPHPMailer();

    //是否启用smtp的debug进行调试开发环境建议开启生产环境注释掉即可
    默认关闭debug调试模式
    $mail->SMTPDebug=1;

    //使用smtp鉴权方式发送邮件
    $mail->isSMTP();

    //smtp需要鉴权这个必须是true
    $mail->SMTPAuth=true;

    //链接qq域名邮箱的服务器地址
    $mail->Host=$cfg_smtp_server;

    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure='ssl';

    //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,
    但是现在新的好像已经不可用了可选465或牛气7
    $mail->Port=$cfg_smtp_port;

    //设置smtp的helo消息头这个可有可无内容任意
    //$mail->Helo='Hellosmtp.qq.comServer';

    //设置发件人的主机域可有可无默认为localhost内容任意,建议使用你的域名
    $mail->Hostname=$cfg_basehost;

    //设置发送的邮件的编码可选GB2312我喜欢utf-8据说utf8在某些客户端收信下会乱码
    $mail->CharSet='UTF-8';

    //设置发件人姓名(昵称)任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName=$cfg_smtp_user;

    //smtp登录的账号这里填入字符串格式的qq号即可
    $mail->Username=$cfg_smtp_usermail;

    //smtp登录的密码使用生成的授权码(就刚才叫你保存的最新的授权码)
    $mail->Password=$cfg_smtp_password;

    //设置发件人邮箱地址这里填入上述提到的“发件人邮箱”
    $mail->From=$cfg_smtp_usermail;

    //邮件正文是否为html编码注意此处是一个方法不再是属性true或false
    $mail->isHTML(true);

    //设置收件人邮箱地址该方法有两个参数第一个参数为收件人邮箱地址第二参数为给该地址设置的昵称
    不同的邮箱系统会自动进行处理变动这里第二个参数的意义不大
    $mail->addAddress($cfg_email,$cfg_smtp_user);

    //添加多个收件人则多次调用方法即可
    //$mail->addAddress('xxx@163.com','lsgo在线通知');

    //添加该邮件的主题
    $mail->Subject=$diy->name;

    //添加邮件正文上方将isHTML设置成了true,则可以是完整的html字符串
    如:使用file_get_contents函数读取本地的html文件
    $mail->Body=$emailbody;

    //为该邮件添加附件该方法也有两个参数第一个参数为附件存放的目录
    (相对目录、或绝对目录均可)第二参数为在邮件附件中该附件的名称
    //$mail->addAttachment('./d.jpg','mm.jpg');
    //同样该方法可以多次调用上传多个附件
    //$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');

    if(!$mail->send())
    {
    echo"Failtosend.<p>";
    echo"Causeoftheerror:".$mail->ErrorInfo;
    exit;
    }
    //邮件发送结束

    测试自定义表单提交效果

    1、本站所有资源皆来源于网络和用户自行上传,因此不包括售后和技术,敬请谅解!
    2、本站不保证所提供的源码的准确性、安全性和功能完善性,资源仅用于学习用!
    3、您下载的资源,请务必在24小时内删除,资源仅提供本地测试,请勿商用或者非法用途都与本站无关,一切后果自负!
    4、如发现资源下载不了,或者侵权请及时联系客服或者邮箱admin#niuqi.net,#改为@!
    牛气网 » 织梦dedecms提交自定义表单后发送到指定邮箱

    发表评论

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: admin@niuqi.net),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者

    发表评论

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: admin@niuqi.net),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者
    • 60会员总数(位)
    • 3147资源总数(个)
    • 1989本月发布(个)
    • 0 今日发布(个)
    • 371已陪伴您(天)

    牛气网NIUQI.NET站长源码平台

    开通SVIP会员 了解详情
    升级SVIP尊享更多特权立即升级