ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PHP邮件配置踩坑?别让sendmail成为你发邮件的绊脚石

PHP邮件配置踩坑?别让sendmail成为你发邮件的绊脚石 一. 使用 PHP 内置的 mail() 函数1. 下环境WampServer2.5Windows 10Apache 2.4.9MySQL 5.6.17PHP 5.5.12在某种特定况状的条件之下, 运用 PHP 所内置的 mail() 函数去发送邮件, 那是需要首先进行安装的, 其下载地址是那个专门提供的地方。先将下载所得的.zip拿去解压, 解压之后放置到自行定义的目录那里, 我所指的这个自定义目录是D:\wamp\bin。② 对 php.ini 文件进行配置, 借助某种方式来明确 ph.ini 文件的实际路径。邮件服务器以腾讯邮箱为例php.ini 文件主要配置SMTP 25邮件服务端口 D:\wamp\bin\\.exe -t③ 配置 .ini需要配置smtp_serversmtp.qq.com smtp_port25 ,开启 log 方便排错生成的log文件在sendmail根目录 error_logfileerror.log debug_logfiledebug.log auth_username472323087qq.com auth_password你的授权码 ,force_sender 要和auth_username一致 force_sender472323087qq.comsmtp_port25 ,开启 log 方便排错生成的log文件在sendmail根目录 error_logfileerror.log debug_logfiledebug.log auth_username472323087qq.com auth_password你的授权码 ,force_sender 要和auth_username一致 force_sender472323087qq.com说明配置项里的, 并非邮箱的密码, 而是腾讯邮箱的第三方客户端授权码, 获取授权码的途径是:登录那个地方, 挑选“设置”, 接着选“POP3/IMAP/SMTP///服务”, 再去选“生成授权码”。要点击“生成授权码”, 就得发送一条验证信息, 在验证通过之后方可得到授权码。④ 测试发送邮件$subject Hello World!; $body Welcome to China!; mail($to, $subject, $body);$subject Hello World!; $body Welcome to China!; mail($to, $subject, $body);收到邮件2. Linux 下环境LNMPCentOS 6.6 Nginx 1.8.0MySQL 5.6.23PHP 5.6.9① 安装# yum install sendmail② 启动# /etc/rc.d/init.d/sendmail start③ 此时可以直接通过 mail 命令来给指定邮箱发送邮件[rootlocalhost ~]# echo this is a mail test|mail -s text dee1566126.com先说这里以 126 邮箱为例, 再说腾讯邮箱, 因为腾讯邮件服务器存在一定限制, 如果不进行设置, 很容易导致出现拒收情况, 关于腾讯邮箱的情况后续再讲。打开邮件④ 使用 PHP 的 mail() 函数发送邮件需要修改 php.inismtp_port 25 sendmail_path /usr/sbin/sendmail -tsendmail_path /usr/sbin/sendmail -tSMTP 不用设置mail.php$subject Hello World!; $body Welcome to China!; if(mail($to, $subject, $body)) { echo 发送成功; } else { echo 发送失败; }$subject Hello World!; $body Welcome to China!; if(mail($to, $subject, $body)) { echo 发送成功; } else { echo 发送失败; }收到邮件打开邮件说明mail(接受方email, 邮件主题, 正文内容, headers, from:发送方email);要修改发件人可以添加第四个参数$subject Hello World!; $body Welcome to China!; $headers array(); $headers[] MIME-Version: 1.0; $headers[] Content-type: text/plain; charsetiso-8859-1; $headers[] From: dee 472323087qq.com; $from 472323087qq.com; if(mail($to, $subject, $body, implode(\r\n, $headers), $from)) { echo 发送成功; } else { echo 发送失败; }$subject Hello World!; $body Welcome to China!; $headers array(); $headers[] MIME-Version: 1.0; $headers[] Content-type: text/plain; charsetiso-8859-1; $headers[] From: dee 472323087qq.com; $from 472323087qq.com; if(mail($to, $subject, $body, implode(\r\n, $headers), $from)) { echo 发送成功; } else { echo 发送失败; }此时收到的邮件打开邮件⑤ 要是接收方 email 属于腾讯邮箱, 极易呈现发送成功的状况, 然而实际上压根没发送成功, 借由查看日志的方式。[rootlocalhost sbin]# tail -f /var/spool/mail/root可能会出现 550 Mail content denied. http://service.mail.qq.com/cgi-bin/help?subtype1id20022no1000726 554 5.0.0 Service unavailable554 5.0.0 Service unavailable550邮件出现问题, 原因在于, 该邮件所含内容, 涉嫌存在大量群发的行为, 而且, 还遭到了多数用户的投诉, 被认定成了垃圾邮件。
返回列表