2

我在 php 文件中有一个小的 php 邮件程序脚本,可以正常工作并可以正常发送邮件:

$subject = "subject"; 
$mail_body = "mail body";
$name = "noreply";
$email = "noreply@domain.com";
$recipient = "somebody@domain.com";
$header = "From: ". $name . " <" . $email . ">\r\n";
mail($recipient, $subject, $mail_body, $header);

但是,如果我将其取出并制作为自己的文件,或者将其放入不同的文件中,则它不起作用。没有错误消息,也没有发送电子邮件。

没有 php ini set 命令,也没有包含的 php 文件。

关于为什么它在较大的 php 脚本中工作但不能单独工作的任何想法?

4

1 回答 1

1

您的代码一切正常。我只用我的地址替换 $recipient 中的电子邮件地址来测试它,它工作正常(我用我的公司电子邮件测试它 - Exchange 服务器上的 Outlook 和另一个使用 Hotmail 地址的测试 - 都工作正常并到达我的收件箱)。

  • 但请确保 $mail_body 中的新行是“\n”而不是“\r\n”。正如您可以在有关message参数的文档中阅读的那样:

每行应该用 LF (\n) 分隔。行不应超过 70 个字符。

  • 确保 $name 和 $email 不包含禁止字符,如 <、> 和换行符(\r、\n 或 \r\n)。正如迈克尔指出的那样,其中的新行可能导致电子邮件注入攻击。您不希望您的联系表格被垃圾邮件发送者用作邮件平台!

您应该考虑使用像PHPMailer这样的电子邮件库,这将简化您的开发,因为mail()对于高级邮件发送非常棘手。这些库中的大多数已经涵盖了这些攻击和标准......

于 2010-02-23T20:04:41.500 回答