//邮件发送开始 $emailbody = '' ; foreach ( $diy ->getFieldList() as $field => $fieldvalue ) { $emailbody .= $fieldvalue [0]. ':' .${ $field }. '<br />' ; } global $cfg_smtp_server , $cfg_admemail , $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 = new PHPMailer(); //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式 $mail ->SMTPDebug = 0; //使用smtp鉴权方式发送邮件 $mail ->isSMTP(); //smtp需要鉴权 这个必须是true $mail ->SMTPAuth=true; //链接qq域名邮箱的服务器地址 $mail ->Host = $cfg_smtp_server ; //设置使用ssl加密方式登录鉴权 $mail ->SMTPSecure = 'ssl' ; //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,现在新的好像已经不可用了 可选465或587 $mail ->Port = $cfg_smtp_port ; //设置smtp的helo消息头 这个可有可无 内容任意 // $mail->Helo = 'Hello smtp.qq. Server'; //设置发件人的主机域 可有可无 默认为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_shoujianren , $cfg_smtp_user ); //添加多个收件人 则多次调用方法即可,.lol9.<a href="http://.lol9." target="_blank"><u>织梦模板</u></a>网 // $mail->addAddress('xxx@163.','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 "Fail to send. <p>" ; echo "Cause of the error: " . $mail ->ErrorInfo; exit ; } //邮件发送结束 |
织梦dedecms提交自定义表单后发送到指定邮箱
网上很多教程都是用dedecms自带的邮件库发送邮件,而且是写死要发送的字段内容,今天我们用phpmailer来给站长发送自定义表单提交的数据到指定邮箱上(QQ邮箱,163邮箱都可以),不写死任何东西,有什么字段就提交发送什么字段。
操作之前,我们要先搞定用来发送邮件的那个邮箱,说白了就是要开启SMTP。
QQ篇
登录QQ邮箱-设置-账户,找到POP3/IMAP/SMTP,开启,现在的邮箱开启POP3/SMTP都要授权码了,千万要记下你的授权码啊,等一下是作为密码使用的。
开启成功后是这样的
163邮箱篇
163邮箱开启POP3/IMAP/SMTP 也是要授权码的,他是自定义的,不能跟邮箱的密码一样,所以千万要记得自己设置的授权码,一会用到它
这里提示也是要开启授权码的
根据自己邮箱开启POP3/IMAP/SMTP,接下来我们来设置后台,认真看下图红色圈着的,一个都不能少
dedecms织梦后台系统配置里添加收件人
下载百度网盘链接: https://pan.baidu./s/10mfmS1ZW42nClnLAvNctTg 提取码: c9w2
PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式,固php还得openssl的支持,可以查看phpfo,如下两项均存在则可以使用,其中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);
这样邮件就可以正常发送了!
网站设计
- 静宁会SEO的网站建设公司:全面提升您的网络影
- 提升在线业务的关键:选择最佳的丽水网站建设
- 浙江网站优化发展潜力如何
- 井研专业的网站建设公司:打造您的在线品牌
- 灵山SEO网站建设公司:提升您的在线业务表现
- 蒙城网站建设优化公司:提升您网站表现的理想
- 阳谷企业网站优化:提升线上业务力的关键
- 樟树专业的网站建设公司:打造您在线业务的坚
- 通河百度SEO排名的策略与技巧
- 重庆百度快照排名如何进行精准的客户引流
- 重庆百度快照排名
- 常宁便宜的建站公司:助您轻松打造在线业务
- 巫溪百度网站优化:提升网站曝光率与流量的关
- 湖北整站优化怎么做才能放大客户需求
- 闸北网站建设多少钱?全面解析与预算规划
- 辽宁企业网站优化怎么做电话营销