0

我正在处理一个简单的联系表单,并且 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>

我知道我对此非常了解,如果这是我的愚蠢错误,那么我很抱歉。我很笨。提前致谢。请不要讨厌。

-亨利

4

3 回答 3

1

您在脚本中唯一可以做的就是检查mail()函数的返回值。

如果true是,则消息被成功接受传递。但是,这并不意味着该消息实际上已发送。

简单的例子:

if (mail(...))
{
  // mail was accepted for delivery
}
else
{
  // not accepted
}
于 2013-03-08T21:45:24.440 回答
0

你应该看看swiftmailer。设置快速简单,并且有很好的文档记录。错误处理是一流的!

于 2013-03-08T23:25:41.537 回答
0

好吧,我遇到过邮件似乎已发送但在我要发送到的收件箱中看不到的情况。所以这里有一些我做的事情:

  1. 不要从本地主机发送,除非您有一个可以发送出站消息的邮件服务器
  2. 最好在远程服务器上发送或测试您的邮件脚本
  3. 确保发件人电子邮件地址与原始域相同
  4. 不要使用与发件人电子邮件不同的回复电子邮件 - 它可能会被作为垃圾邮件吞噬或被大多数电子邮件客户端丢弃
  5. 验证服务器允许的 smtp 端口并设置
  6. 验证 smtp 服务器并设置
  7. 提供发送电子邮件的实际凭据
  8. 将用户的电子邮件放在带有 mailto: 链接的邮件正文中的某个位置,以便您可以快速回复他们。(如果他们使用脚本发送给您)。如果您要发送给他们,则无需指定不同的回复
  9. 确保指定编码字符集、换行符和可能的自动换行功能
  10. 尝试使用来自 phpclasses.org 的经过测试的 PHP 类

我一次拿一个,通常会以正确的方式发送我的邮件。在您的代码中,尝试调整这些行并进行测试:

$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
于 2013-03-10T05:13:31.847 回答