0

I have a local server which host PHP applications. My applications send emails to different addresses. However, I am noticing a problem that I am unable to figure out. It send emails to internal addresses but it won't send messages to external addresses.

I also have an exchange server on the same network. so for example I have these 2 "internal domain"

domain1.com domain2.com

if I execute this php function from my application it gets delivered with no problem

mail("name@domain1.com","Test Subject","Test message");

However, if I try sening a message to gmail, yahoo or any external domain it does not send it

mail("name@gmail.com","Test Subject","Test message");

My server is running on Windows 2008 Server R2 with PHP5.3.19 installed on it via IIS6

How Can I correct this issue?

4

1 回答 1

0

mail()在 Windows 上需要在 php.ini 中进行额外配置,因为 Windows 没有 Sendmail 或类似的东西。

第一个SMTP设置应该指向您的 ISP 的出站服务器,该服务器不一定是您从中检索邮件的同一台服务器。当我在支持部门工作时,有很多像您描述的问题,因为入站服务器仍将接受邮件,但仅限于本地域。

第二个是sendmail_from设置,这是 PHP 为 Windows 发行版编写的 gimpy 小邮件程序在每个 SMTP 事务中使用的设置,无论标头中有什么。在 *nix 上,Sendmail 将读取标题并From:自行获取地址,在 Windows 上,PHP 将始终使用 php.ini 中的内容。如果这是一个“垃圾”地址,example@example.com或者域不存在的东西,许多邮件服务器会直接拒绝它。我建议在 PHP.ini 中将其更改为不错的内容并将以下行添加到您的邮件脚本中:

ini_set('sendmail_from', $from_address);

或者,只使用PHPmailer ,因为它比 PHP 可怕的小功能要好得多。mail()

于 2013-05-30T15:46:37.780 回答