我试图让php通过“mail()命令,在Ubuntu linux上发送邮件。邮件似乎正在发送,然后通过发送邮件被丢弃 - 我不知道该怎么办做到这一点。
php mail()函数返回true。邮件未送达。我已经设置了evolutoin来在localhost上发送vi SMTP,并向同一个用户发送了一封电子邮件 - 它已经发送。
/var/log/mail.log文件包含以下条目。
Jul 9 15:15:34 anake postfix/pickup[1292]: 02879340040: uid=33 from=<www-data>
Jul 9 15:15:34 anake postfix/cleanup[2079]: 02879340040: message-id=<20110709141534.02879340040@anake>
Jul 9 15:15:34 anake postfix/qmgr[1293]: 02879340040: from=<www-data@anake.ianhobXXson.co.uk>, size=411, nrcpt=1 (queue active)
Jul 9 15:15:36 anake postfix/smtp[2082]: 02879340040: to=<hobXXson42@gmail.com>, relay=smtp.ntlworld.com[81.103.221.11]:25, delay=2.3, delays=0.1/0.02/2.1/0.13, dsn=5.0.0, status=bounced (host smtp.ntlworld.com[81.103.221.11] $
Jul 9 15:15:36 anake postfix/cleanup[2079]: 5370B340042: message-id=<20110709141536.5370B340042@anake>
Jul 9 15:15:36 anake postfix/bounce[2083]: 02879340040: sender non-delivery notification: 5370B340042
Jul 9 15:15:36 anake postfix/qmgr[1293]: 5370B340042: from=<>, size=2228, nrcpt=1 (queue active)
Jul 9 15:15:36 anake postfix/qmgr[1293]: 02879340040: removed
Jul 9 15:15:36 anake postfix/local[2084]: 5370B340042: to=<www-data@anake.ianhobXXson.co.uk>, relay=local, delay=0.03, delays=0/0.02/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jul 9 15:15:36 anake postfix/qmgr[1293]: 5370B340042: removed
我不知道从哪里获得“来自”地址。执行的实际代码是: -
<?php
$to = 'hobXXson42@gmail.com';
$subject = 'Test email';
$message = 'hello - this has gone round the loop';
$headers = 'From: ian@ianhobXXson.co.uk' . "\n" .
'Reply-To: ian@ianhobXXson.co.uk' . "\n" .
'X-Mailer: PHP/'. phpversion()."\r\n";
if (mail($to, $subject, $message, $headers)) {
echo "Message sent OK";
} else {
echo "message send failed";
}
&GT;
任何人都可以发现出了什么问题,我能做些什么呢?电子邮件地址略显明显。 伊恩
答案 0 :(得分:3)
这里的“from”是信封发送方,即最终将在Return-Path标题中的地址。此标题不能以与其他标题相同的方式更改,因为它实际上不是邮件的一部分,而是信封的一部分。 Return-Path是发送跳转的地址,其中包括。
您可以使用mail()
功能的第五个参数更改信封发件人。 Postfix(您的服务器正在运行),Sendmail和Exim都可以使用-f
标志更改信封发件人:
...
$extra_parameters = '-fian@ianhobXXson.co.uk';
mail($to, $subject, $message, $headers, $extra_parameters);