【问题标题】:Send mail from homepage. What am I missing in my code?从主页发送邮件。我的代码中缺少什么?
【发布时间】:2012-08-23 18:32:23
【问题描述】:

我希望能够从我的主页发送邮件,但它无法按我的意愿工作。我收到一封邮件,但它没有说是从家里来的。只是说未知。我在两个不同的地方有这个。我使用其他文本区域的另一个地方,我的邮件中的所有内容都可以正常工作,但是我正在尝试工作的另一个地方我只希望他们在那里添加电子邮件,然后它应该与所有信息一起发送。

我的页面上的代码:

<form id="subscribe" class="clearfix" method="post" action="get_mail.php">
    <div class="field alignleft">
       <input type="text" value="Enter your email" onclick="if(this.value=='Enter your email')this.value='';" onblur="if(this.value=='')this.value='Enter your email';" />
     </div>
     <div class="search-btn">
        <input type="submit" value="" />
     </div>
</form>

然后我有这个 php 脚本

<?php

    //-----------------------------------------------------
    //-----------------------------------------------------
    $address= "xxxxx.xxxxx@outlook.com";
    //-----------------------------------------------------
    //-----------------------------------------------------

    $name = $_REQUEST["name"];
    $email = $_REQUEST["email"];
    $website = $_REQUEST["website"];
    $subject .= "You have an email from your web site (from $name)! \n\n";
    $message_content = strip_tags($_REQUEST["message"]);

    $headers = "From: $name <$email>\n";
    $headers .= "Reply-To: $subject <$email>\n";

    $message = "--$mime_boundary\n\n";

    $message .= "You have an email from your web site: \n\n\n";
    $message .= "Name: $name \n\n";
    $message .= "Email: $email \n\n";
    $message .= "Website: $website \n\n";
    $message .= "Message: $message_content \n\n";

    $message .= "--$mime_boundary--\n\n";

    $mail_sent = mail($address, $subject, $message, $headers);
    echo $mail_sent ? "Success, mail sent!" : "Mail failed";

?>

【问题讨论】:

  • 您能告诉我们您遇到的错误吗?
  • 您并不需要$mime_boundary 行,除非您要发送消息的多个版本(即html 和纯文本),或者您有附件。这是要删除的一件事。此外,您应该确保您有一个邮件服务器设置供您的邮件进程使用,或者包括 Gmail 或其他类似的连接详细信息,以便通过它发送。 mail() 运行底层服务器的邮件发送能力。

标签: php html html-email


【解决方案1】:

两件事:

  1. 尝试将 $headers 中的“\n”替换为“\r\n”。

  2. 据我所知,一些主机(例如我认为 GoDaddy 或 Hostgator 会这样做)会覆盖已发送电子邮件中的“发件人”值并将其更改为您拥有的值。这意味着如果您的主机帐户中没有明确包含“from@domain.com”,您将无法从该地址发送电子邮件,并且它将始终被覆盖。你必须联系你的主人来检查这个。如果可能的话,我建议也检查另一台服务器上的脚本。

【讨论】:

    【解决方案2】:

    您的表单字段似乎都没有名称 - 您的代码在这里:

    $name = $_REQUEST["name"];
    $email = $_REQUEST["email"];
    $website = $_REQUEST["website"];
    

    需要名称为“名称”、“电子邮件”和“网站”的表单字段。例如,您的“电子邮件”字段需要如下所示:

    <input type="text" name="email" ... />
    

    【讨论】:

    • 但在第一种情况下我需要所有这些字段,但在第二种情况下我不需要。我可以在代码中预先编写它们,并且只在我的文本字段中添加他们提交的电子邮件地址吗?那会是什么样子?如果我使用上面的代码并且他们输入了一个电子邮件地址,我会收到一封邮件,但它说它来自未知。我什至不知道它来自谁。
    • websitename 不是特殊的标题字段,因此它们必须位于有效页面的源代码中。您能在原始页面中找到具有这些名称的字段吗?如果您想要不可见的字段,只需将它们输入为&lt;input type="hidden" name="website" value="This site" ... /&gt;
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2011-10-16
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多