我有一个简单的脚本设置:
<?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标题不起作用。
UPDATE
这个小黑客正在工作,但我宁愿修复这个问题以外的PHP。
mail('[email protected]', 'Hello World', 'Testing a message', null,'[email protected]');
我是超级noob与邮件服务器
有了美国在线,他们往往不会经历,除非你填写表格,以获得白名单 。 要更改邮件的来源,请编辑php.ini文件中的sendmail_path参数。 这是在additional_parameters下的php mail()文档中提到的。
例如:
sendmail_path = "/usr/sbin/sendmail -t -f [email protected]"
你也可以传递一个参数给mail()函数:
<?php mail('[email protected]', 'the subject', 'the message', null, '[email protected]'); ?>
最后,你可能会发现其他的邮件包比较灵活,比如PEAR MAIL包或者msmtp ,你可以指定其他的smtp服务器。
您要更改信封From:地址,与From:标题不同。 在mail()函数的文档中看到这个注释 。
信封地址取决于您的MTAconfiguration – 在您的情况下,'www-data'是您的脚本运行的用户,'com'是您的计算机的主机名(部分?)。 假设你在* nix,你可以尝试覆盖这个信封地址:
mail('[email protected]', 'Hello World', 'Testing a message', null,'[email protected]');
其中[email protected]是您要显示的信封发件人地址。
如果这样,你可以访问你的php.ini文件,你可以在那里设置信封发件人的地址 – 见凯尔的post。
您可能还想看看您的MTA(sendmail,postfix)configuration – 看起来像您的主机名设置有问题。 更改PHP的设置将修复它的PHP,但如果您的系统上的其他(克朗,logwatch)要发送邮件,这将有助于有一个工作的MTA。
在您的评论之后编辑:在不知道邮件服务器的configuration的情况下很难提出任何build议,但是要开始,请尝试以下操作:
myhostname = mail.virtualhostname.com mydomain = virtualhostname.com myorigin = $mydomain masquerade_domains = virtualhostname.com
尝试逃离标志。
mail('corgan1003\@aol.com', 'Hello World', 'Testing a message');