小白兔晒黑了

导航

 

0 前言

0.1 简介

发送邮件有两种不同的方式。

1、是直接通过php中的mail()函数进行发信,
需要程序所在服务器的支持,通常linux服务器大多有这项服务。比如之前我用的Godaddy主机就可以进行发信,但是国内主机服务商则基本不带这个函数的支持。因为在这个垃圾邮件横行霸道的年代,服务器提供商则索性关闭这个函数的使用,所以大家很难可以调用mail()进行发信。具体测试大家可以调用<? php phpinfo(); ?>来查看自己的服务器是否支持这个函数。
2、是通过写一些程序来通过stmp服务来进行发信。
虽然可以实现发邮件这个功能,但是需要自己写相关程序带调用stmp服务器的使用。网上也有相关现成的程序可以直接拿来用。但是毕竟没有mail()函数来的直接,来的快。虚拟主机用户还是选择stmp来进行发邮件的操作。如果是vps或者服务器主机用户则推荐使用第一种方式。

0.2 我的系统配置

系统版本:windows11我的Apache版本是  2.4.39
php 我试过,5.3.29nts 和 8.2.12,都可以运行成功,所以你要是运行失败,不是php的锅

 

1 sendmail下载:

官网:https://www.glob.com.au/sendmail/

备份地址:http://pan.baidu.com/s/1eRC43aM ( 密码:6hci )

如果地址均已失效,可以去下载一个xampp,安装好以后里面自带sendmail文件夹,把它复制出来即可

xampp下载地址链接:https://pan.baidu.com/s/17f0jtvbFx71R_91uaOhNPg?pwd=sk5z
提取码:sk5z


下载以后解压,然后随便放在一个目录下,比如我放在:D:\xampp 文件夹下

 

2 配置 

2.1 配置 php.ini

[mail function]
SMTP=localhost
smtp_port=25
sendmail_path = ""D:\xampp\sendmail\sendmail.exe" -t"
mail.add_x_header=Off mail.mixed_lf_and_crlf=Off

sendmail_path改成你的地址

 其实只要一行就可以了,其他的都可以屏蔽掉,我后来又在phpstudy里按以下写法测试过,

[mail function]
sendmail_path = "D:\sendmail\sendmail.exe -t -i" ;你的sendmail安装的位置
至于有没有 -i 和嵌套的双引号,都是无关紧要的,两种写法都可以,

2.2 配置 sendmail.ini

qq邮箱采用auth_password方式:配置过outlook的都知道怎么获得授权码,不明白自行百度:qq邮箱、授权码 、outlook配置等关键词

[sendmail]
smtp_server=smtp.qq.com
smtp_port=465          ;端口号不是默认的25,qq邮箱是465,其他邮箱我不没测试过不知道。网上的资料都说是25,其实还是要去qq邮箱查看才行。
smtp_ssl=auto          
error_logfile=error.log
auth_username=22222@qq.com     ;这里写你的QQ邮箱
auth_password=xxxxxxx        ; 注意,这里填写的不是你邮箱的密码,而是授权码!授权码也是在QQ设置里面可以获得,这里我就不截图了
force_sender=22222@qq.com     ;同样,这里也是写你的QQ邮箱

配置完要重启你的服务器

3  emial函数,发一个简单的邮件试试看

$to = "111111@qq.com";
$subject = '你的标题';
$body = '你的内容';
$from_name = 'ttt';//你的邮箱昵称 可以瞎写一个 但不能没有
$from_email = '222222@qq.com'; //你用来发邮件的邮箱,即你刚刚在sendmail.ini中填写的邮箱
//qq邮箱From行必须要有,且必须按照 昵称 <你的邮箱> 的格式,不然会报错
$headers = "From: $from_name <$from_email>" . "\r\n";
//Reply-To 可以省略
//$headers .= "Reply-To: $to" . "\r\n" ;
//MIME-Version 可以省略
//$headers .=  'MIME-Version: 1.0' . "\r\n";
//CC行可省略
//$headers .= "CC: 3333333@qq.com"."\r\n" ;
//Content-type: 行可省略
//$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
//X-Mailer 行可省略
//$headers .=  'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body,$headers)) {
    echo '发送成功!';
} else {
    echo '发送失败,去 D:\xampp\apache\logs\error.log文件中查找错误原因';
}

 

 

参考

Windows系统XAMPP通过sendmail.exe发送邮件设置,以163&QQ邮箱为例。 https://www.jianshu.com/p/a59c240e614c

在windows下配置sendmail服务器 https://www.jianshu.com/p/2bdc4c60ae40

https://blog.csdn.net/chengjianghao/article/details/103933784

https://blog.csdn.net/zjy1125/article/details/123598563

Windows下面配置sendmail邮件服务器 https://blog.csdn.net/zhezhebie/article/details/56495950

posted on 2024-10-19 01:10  小白兔晒黑了  阅读(12)  评论(0编辑  收藏  举报