为了实现windows下php发送邮件,我找了很多教程,但是仍然没有成功,后来跑到国外网站终于找出了端倪。
首先要知道php是如何实现发送邮件功能的,应该满足两个条件:
1.申请了一个支持smtp服务的邮箱
2.本地安装了一个能够连接smtp服务器的第三方软件(因为现在的邮箱服务需要验证才可以发送邮件,所以我们利用第三方软件完成它)
下面一一讲解需要注意的地方
注册邮箱
首先你要先有一个邮箱,之后sendmail会模拟登录这个邮箱发送邮件,假设我注册的邮箱为example@yeah.net,之后我需要登录这个邮箱,进行邮箱安全设置,开启smtp服务,设置授权码。这个授权码是你利用smtp服务登录时的密码。请务必注意你所申请的邮箱是否有smtp设置。
下载sendmail
下载的zip安装包直接解压到你想解压到的目录(解压路径最好不要过长,不要包含中文,这是个好习惯,请务必保证这样做),我的解压路径为
C:/wamp64/bin/sendmail/
sendmail的作用是以第三方的方式登录某个邮箱并发送邮件
配置php.ini
[mail function]
sendmail_path = "C:/wamp64/bin/sendmail/sendmail.exe -t"
请注意sendmail_path的斜杠方向,其他mail参数无需设置,因为我们会在sendmail.ini中设置服务器地址,端口号等
配置sendmail.ini
smtp_server= smtp.yeah.net
smtp_port=25
;error_logfile和debug_logfile请先不要注释,这样有助于您debug,配置无误后再注释掉它们
error_logfile=error.log
debug_logfile=debug.log
auth_username= example
auth_password= yourpassword
force_sender= example@yeah.net
这里主要是设置了邮箱服务器,端口号,用户名,密码。最后的force_sender请务必设置,否则会报错Message is missing sender's address
php代码
<?php
$to = "yourmail@qq.com"; // 邮件接收者
$subject = "测试邮件"; // 邮件标题
$message = "这里是新的内容"; // 邮件正文
if(mail($to,$subject,$message)) {
echo "邮件已发送";
}else {
echo "邮件发送失败";
}
?>