使用程序发送电子邮件总结:
一,PHP
- 使用简单函数发送(mail,error_log)
mail("liangxifeng@163.com","title","content","From:<test@gmail.com>");
error_log("content", 1, "liangxifeng@163.com", "From: 547096390@qq.com\n");
- 可以看出error_log的发送邮件功能也是基于mail函数的
- 这里有另外一种方式可以实现,就是使用php发送邮件类,demo地址,这种方式各个qq/gmail等收件箱都均可以收到。
二,shell
在使用shell的mail命令发送邮件前,需要安装sendmail这个Linux下的基本邮件组件:
- ubuntu:sudo apt-get install mailutils
- Centos:yum install sendmail
echo "This is a test mail." | mail -s "test" liangxifeng@163.com
- 以上使用简单函数都是向 liangxifeng@163.com邮箱发送邮件,并可以发送成功,但是我尝试了qq和gmail邮箱均无法发送成功,估计人家的反垃圾邮件技术比较好,没有经过域名认证的ip地址smtp服务器基本就是不收。也可能是sendmail服务器的dns没有设置好。
三,通过修改mail配置文件可以使用外部SMTP服务器来发送邮件。
- 以网易邮箱为例。
vim /etc/mail.rc 追加如下文字
set from=liangxifeng@163.com #from是发送的邮件地址
set smtp=smtp.163.com #smtp是发生的外部smtp服务器的地址
set smtp-auth-user=liangxifeng #外部smtp服务器认证的用户名
set smtp-auth-password=aaaa #外部smtp服务器认证的用户密码
set smtp-auth=login #邮件认证的方式
- 配置后执行如下命令:
cat context.txt | mail -s "tes the smtp mail" 547096391@qq.com
//547096391@qq.com是收件人地址,content.txt里面是邮件正文.
注意:
- php的电子邮件发送,也是基于linux系统底层的sendmail组件,所以要想使用php的mail函数发送电子邮件,就必须在对应的linux服务器中安装sendmail组件。
- 如果linux系统已经成功安装sendmail组件,shell命令可以成功发送邮件,可是php依然无法发送,解决办法:vim /usr/local/php/php.ini
sendmail_path = /usr/sbin/sendmail -t -i