我的环境是:apache+mysql+php
首先查看是否开启了socket与openssl扩展
如果没有那就找到php.ini文件并打开,开启这这个扩展
将extension=php_openssl.dll
这个句代码前的“;”去掉
php_sockets.dll php_openssl.dll
发送邮件的代码中确保有这两句:
$mail->smtpcure = 'ssl'; //设置使用ssl加密方式登录鉴权$mail->port = 465; //设置ssl连接smtp服务器的远程服务器端口号 465
给防火墙添加465端口的访问权限
之前我在本地测试一直正常,换上阿里云服务器之后邮件发送失败
是因为阿里云默认没有开启465端口的访问权限
服务器开启465安全组,最新的阿里云ecs可以直接在安全策略中配置
阿里云管理后台->云服务器->网络和安全->安全组->自行配置
完成后重启php和服务器
已经巴黎公社失败原因可以成功接收到邮件了。
补充我爱妈妈作文一个小问题,我用alert弹出的中文显示乱码,本地测试是ok的
这是原来的代码:
exit("<script chart='utf-8'>alert(\"留言成功!\");location.href='".$_rver["http_referer"]."'</script>");
然后改成了下面这句就不再乱码了
echo '<html><head><meta http-equiv="content-type" content="为盼text/html; chart=utf-8"><title>提示</title><script language=javascript>alert("留言成功!");location.href="'.$_rver["http_referer"].'"</script></head></html>';
再中国名人的故事补充一下phpmailer发送邮件出现标题或者内容或者提示信息出现中文乱码的情况
网上教程有很多,并不适合我
我自己摸索出来的代码贴出来,大家可以试一试,行就行,不行您再找别的方案哈
//将留言发送到邮箱 //引用phpmailer核心文件 require_once("phpmailer/phpmailer.php"); require_once("phpmailer/smtp.php"); ssion_start(); $mail = new phpmailer\phpmailer\phpmailer(); $mail->issmtp();// 使用smtp服务 $mail->chart = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现上海大学怎么样乱码 $mail->host = "smtp.xx.com";// 发送方的smtp服务器地址 $mail->smtpauth = true;// 是否使用身份验证 $mail->urname = "cyy@qq.com";// 发件服务器邮箱 $mail->password = "xxxxxxxx";//客户端授权密码,而不是邮箱的登录密码! $mail->smtpcure = "ssl";// 使用ssl协议方式 $mail->port = 465;// qq端口465或587 $mail->tfrom("cyy@qq.com", "cyy发的");// 设置发件人信息,如邮件格式说明中的发件人 $mail->addaddress("cyy2@qq.com", "cyy2收的");// 设置收件人信息,如邮件格式说明中的收件人 $mail->addreplyto("cyy@qq.com", "cyy发的"); // 设置回复人信息,指收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址 $mail->subject = "邮件标题";// 邮件标题 $code=rand(100000,999999);//验证码 $_ssion["code"] = $code; return $code."----".ssion("code"); $mail->body = "邮件内容是 <b>您的验证码是:$code</b>,如果非本人操作无需理会!"; $mail->body = "邮件正文"; $mail->altbody = "this is the plain text纯文本"; // 这个是设置纯文本方式显示的正文内容,如果不支持html方式,就会用到这个,基本无用 if (!$mail->nd()) { // 发送邮件 echo "message could not be nt."; echo "mailer error: " . $mail->errorinfo;// 输出错误信息 } echo '<html><head><meta http-equiv="content-type" content="text/html; chart=utf-8"><title>提示</title><script language=javascript>alert("留言成功!");location.href="'.$_rver["http_referer"].'"</script></head></html>';
发现在网页端的邮箱中文的标题和正文都是正常的,但是用foxmail收取邮件出现乱码
原因是foxmail默认使用西欧编码,需要手动把乱码的文件编码改为utf-8,比较麻烦
我又稍微修改了代码
$mail->subject = "=?utf-8?b?".ba64_encode($mes_sub)."?=";// 邮件标题
这句是标题转码,解决foxmail中标题乱码问题
$mail->body = $content;// 邮件正文 $mail->altbody = $content;;
这里补充了纯文本格式,如果html格式乱码就用纯文本格式
成功解决!!!
本文发布于:2023-04-08 09:02:52,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4ef1684a21a5c0deba9a2b6a45f26412.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:phpmailer在阿里云服务器发送邮件失败,中文乱码.doc
本文 PDF 下载地址:phpmailer在阿里云服务器发送邮件失败,中文乱码.pdf
留言与评论(共有 0 条评论) |