php mail 在windows下的配置

php 的mail函数可以发邮件,它的配置是在php.ini中设置的,一般linux上很方便,众多VPS,host一定会为你设置好。

但是在windows中开发怎么配置呢?

可使用sendmail来通过远程smtp服务器来发邮件。(我这里只讲发邮件,对于一般开发是足够了)

下载sendmail http://www.glob.com.au/sendmail/sendmail.zip

解压到目录例如c:/sendmail

编辑sendmail.ini

smtp_server=smtp服务器地址
auth_username=邮箱登录名
auth_password=邮箱密码
force_sender=发件人地址全写 这个如果不配置可能导致无法发送,但是我实际测试可以不写。

反注释debug_logfile=debug.log这一句以便调试

 

编辑php.ini

sendmail_from = you@yourdomain.com 这个我没写也可以发邮件
sendmail_path = “c:/sendmail/sendmail.exe -t –i”

 

注意force_sender和sendmail_from这两个配置都是为了自动加上From头,但是我的环境即使都设置了,还是没有在邮件头中加上From,导致550 Administrative prohibition错误。

最后只好在mail函数调用时在additional_headers这个参数中包含From,例如

 
<?php
mail('xxxx@gmail.com', "Test Email", 'good email','From: xxxx@ig2net.info' )
?>

这样就可以了。

注意From由于安全的原因,可以使其他域名的随意账户,即是此账户不存在,但是如果是配置的邮件服务器的域名,则必须存在。

例如上例中我使用本域名admin@ig2net.info 账户作为邮件服务器,那么'From: xxxx@ig2net.info' 这样发送必须有'xxxx@ig2net.info'  这个账户,否则发不出去。

然而如果使用From: abcd@somedomain.com 作为发件人,那是绝对可以发出去的。当然这可归于垃圾邮件。

 

今天碰到一个问题是,由于我的域名改了,本机测试的邮件发不出去了,打开sendmail的debug.log一看,似乎是验证成功的,但是接着一大堆乱码。我尝试将smtp_ssl设置为none则解决了此问题。

 

参见:

http://www.devcha.com/2010/04/how-to-send-emails-from-php-on-windows.html


Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1