我有一个简单的脚本设置:
<?php
mail('[email protected]', 'Hello World', 'Testing a message');
?>
我无法从我的服务器向 AOL 帐户发送电子邮件。错误详情如下。GMail 让我发送消息......所以我猜 AOL 只是有点严格。
Starting tcpick 0.2.1 at 2009-08-03 22:25 UTC
Timeout for connections is 600
tcpick: reading from tcp_dump.pcap
1 SYN-SENT 67.23.28.65:49516 > 64.12.138.153:smtp
1 SYN-RECEIVED 67.23.28.65:49516 > 64.12.138.153:smtp
1 ESTABLISHED 67.23.28.65:49516 > 64.12.138.153:smtp
220-rly-mg05.mx.aol.com ESMTP mail_relay_in-mg05.6; Mon, 03 Aug 2009 18:25:34 -0400
220-America Online (AOL) and its affiliated companies do not
220- authorize the use of its proprietary computers and computer
220- networks to accept, transmit, or distribute unsolicited bulk
220- e-mail sent from the internet. Effective immediately: AOL
220- may no longer accept connections from IP addresses which
220 have no reverse-DNS (PTR record) assigned.
EHLO bandop.com
250-rly-mg05.mx.aol.com fallsroadsunoco.com
250 HELP
MAIL FROM:<www-data@com>
501 SYNTAX ERROR IN PARAMETERS OR ARGUMENTS
RSET
250 OK
QUIT
1 FIN-WAIT-1 67.23.28.65:49516 > 64.12.138.153:smtp
2 SYN-SENT 67.23.28.65:45729 > 216.239.113.101:smtp
1 FIN-WAIT-2 67.23.28.65:49516 > 64.12.138.153:smtp
221 SERVICE CLOSING CHANNEL
1 RESET 67.23.28.65:49516 > 64.12.138.153:smtp
3 SYN-SENT 67.23.28.65:45729 > 216.239.113.101:smtp
tcpick: done reading from tcp_dump.pcap
20 packets captured
3 tcp sessions detected
你知道我怎样才能让 FROM 参数正确输出吗?在 PHP 邮件函数中设置 FROM 标头不起作用。
更新
这个小技巧正在起作用,但我更愿意在 PHP 之外解决这个问题。
mail('[email protected]', 'Hello World', 'Testing a message', null,'[email protected]');
我是邮件服务器的超级菜鸟
对于 AOL,他们通常不会通过,除非您填写表格以获得白名单。要更改邮件的来源,请编辑 php.ini 文件中的 sendmail_path 参数。这在附加参数下的php mail() 文档中提到。
例如:
您也可以将参数传递给 mail() 函数:
最后,您可能会发现替代邮件包更灵活,例如PEAR MAIL包或msmtp,您可以指定其他 smtp 服务器。
您要更改信封 From: 地址,该地址与 From: 标头不同。请参阅mail() 函数文档中的此评论。
信封地址取决于您的 MTA 配置 - 在您的情况下,“www-data”是您的脚本运行的用户,“com”是您机器主机名的(部分?)。假设您在 *nix 上,您可以尝试像这样覆盖信封地址:
其中 [email protected] 是您要显示的信封发件人地址。
如果可行,并且您可以访问 php.ini 文件,则可以在那里设置信封发件人地址 - 请参阅 Kyle 的帖子。
您可能还想查看您的 MTA(sendmail、postfix)配置 - 看起来您的主机名设置有问题。更改 php-s 设置将为 php 修复它,但如果您系统上的其他东西(cron、logwatch)想要发送邮件,那么拥有一个正常工作的 MTA 会很有帮助。
在您发表评论后进行编辑:在 不知道您的邮件服务器配置的情况下很难提出任何建议,但首先,请尝试以下操作:
尝试转义 at 符号。