PHP邮件脚本不发送邮件

时间:2013-03-08 21:39:24

标签: php html email

我正在处理一个简单的联系表单,php脚本没有向我的电子邮件发送电子邮件...脚本成功运行,它产生的HTML输出见下面的代码。我想弄明白,但我无法让它发送电子邮件。我已经查看了教程,并且看起来与许多教程中的代码完全相同。我正在使用表单来获取用户的输入,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dummy Code - Contact</title>
</head>

<body>

<form action="send_simpleform.php" method="post">
<p>Your name<br />
<input name="sender_name" type="text" size="30" /></p>
<p>Email<br  />
<input name="sender_email" type="text" size="30" /></p>
<p>Message<br />
<textarea name="message" cols="30" rows="5"></textarea></p>
<input name="submit" type="submit" value="Submit" />
</form>

</body>
    </html>

我的PHP脚本也可以在这里看到,

<?php
$msg = "Email sent from www.dummycode.com\n";
$msg .= "Sender's Name:\t $_POST[sender_name]\n";
$msg .= "Sender's E-mail:\t $_POST[sender_email]\n";
$msg .= "Sender's Message:\t $_POST[message]\n";
$to = "henry.harris@xxxxxxxxxxx.com";
$subject = "DummyCode.com";
$headers = "From: My web site <www.dummycode.com>\n";
$headers .= "Reply to: $_POST[sender_email]\n";
mail($to, $subject, $msg, $headers);
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dummy Code Contact Sent</title>
</head>

<body>

<h1>The following email has been sent</h1>

<p>Your Name:<br />
<? echo "$_POST[sender_name]"; ?>
<p>Your Email Adress:<br />
<? echo "$_POST[sender_email]"; ?>
<p>Message:<br />
<? echo "$_POST[message]"; ?>
</p>
</body>
</html>

我知道我很清楚这一点,如果这是我的愚蠢错误,那么我很抱歉。我很笨。提前致谢。请不要讨厌。

-Henry

3 个答案:

答案 0 :(得分:1)

您可以在脚本中执行的唯一操作是检查mail()函数的返回值。

如果true,邮件已成功接受投放。但是,这并不意味着邮件实际上已发送。

简单示例:

if (mail(...))
{
  // mail was accepted for delivery
}
else
{
  // not accepted
}

答案 1 :(得分:0)

你应该看看swiftmailer。设置快速简单,并且非常好地记录。 Error handling是一流的!

答案 2 :(得分:0)

好吧,我遇到了邮件似乎被发送的情况,但我无法在收件箱中看到它我发送给它。所以这里有一些我要做的事情:

  1. 除了您有可以发送出站消息的邮件服务器外,不要从localhost发送
  2. 最好在远程服务器上发送或测试您的邮件脚本
  3. 确保发件人电子邮件地址与原始域名相同
  4. 不要使用与发件人电子邮件不同的回复电子邮件 - 它可能被垃圾邮件吃掉或被大多数电子邮件客户端垃圾邮件
  5. 验证服务器允许的smtp端口并设置
  6. 验证smtp服务器并设置
  7. 提供发送电子邮件的实际凭据
  8. 将用户的电子邮件放在邮件正文的某个位置,并附带mailto:链接,以便您快速回复邮件。 (如果他们使用脚本发送给您)。如果您要发送给他们,则无需指定其他回复
  9. 确保指定编码字符集,换行符以及可能应用字词
  10. 的自动换行功能
  11. 尝试使用phpclasses.org中经过测试的PHP类
  12. 我一次拿一个,通常会把我的邮件发送到正确的地方。在您的代码中,尝试调整这些行并进行测试:

    $headers = "From: My web site <www.dummycode.com>\n"; //Same as originating domain or email (just for tweaks)
    $headers .= "Reply to: $_POST[sender_email]\n"; //Should be same as sender's email for a try