【问题标题】:php form to email not sending email [duplicate]php表单到电子邮件不发送电子邮件[重复]
【发布时间】:2015-09-22 06:57:10
【问题描述】:

我是 php 新手,正在尝试通过表单向我的 gmail 发送电子邮件。单击提交时,我在页面上没有看到任何错误,但我没有收到电子邮件。我的 from id 和 to mail id 存在,并且 from email id 在服务器上(确保不是垃圾邮件)。

<?php
    if(isset($_POST['submit'])){
        $to = "existingmygamilid@gmail.com";
        $subject = "Pickup Request";
        $mailContent = $_POST['name'].$_POST['adress'].$_POST['mobile'].$_POST['email'].$_POST['message'];
        $message = "
        <html>
        <head>
        <title> Pickup Request</title>
        </head>
        <body>
        <p>Hey!... You got a pickup request.</p>
        ";

        // Always set content-type when sending HTML email
        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        // More headers
        $headers .= 'From: <existingemail@testdomain.com>' . "\r\n";

        mail($to,$subject,$message,$headers);
    }
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" class="alt" method="POST">
    <div class="row uniform 50%">
        <div class="6u 12u$(xsmall)">
            <input name="name" placeholder="Name" type="text" />
        </div>
        <div class="6u$ 12u$(xsmall)">
            <input name="address" placeholder="Address" type="text" />
        </div>
        <div class="6u 12u$(xsmall)">
            <input name="mobile" placeholder="Mobile or Landline" type="text" />
        </div>
        <div class="6u$ 12u$(xsmall)">
            <input name="email" placeholder="Email" type="email" />
        </div>                            
        <div class="12u$">
            <textarea name="message" rows="6"></textarea>
        </div>
    </div>
    <ul class="actions">
        <li><input type="submit" value="Send message" /></li>
    </ul>
</form>

【问题讨论】:

  • 您的邮件无法到达收件箱的原因有上百万个。但基本上是因为您的邮件服务器提供商拒绝了来自“testdomain.com”和来自非 SPF IP 的内容。
  • Amarnasan,testdomain.com 是我的服务器名称,正如我在问题中提到的那样,我确保电子邮件 ID 不是垃圾邮件并且域名是现有域。我尝试了没有表单的测试代码,它工作正常。

标签: php email forms http-post


【解决方案1】:

试试这个

<?php
    if(isset($_POST['submit'])){
        $to = "existingmygamilid@gmail.com";
        $subject = "Pickup Request";
        $mailContent = $_POST['name'].$_POST['adress'].$_POST['mobile'].$_POST['email'].$_POST['message'];
        $message = "
                    <html>
                    <head>
                    <title> Pickup Request</title>
                    </head>
                    <body>
                    <p>Hey!... You got a pickup request.</p><br><p>";
        $message .= $mailContent;
        $message .= "</p></body></html>";
        // Always set content-type when sending HTML email
        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        // More headers
        $headers .= 'From: <existingemail@testdomain.com>' . "\r\n";

        mail($to,$subject,$message,$headers);
    }
?>

<form action="" class="alt" method="post">
    <div class="row uniform 50%">
        <div class="6u 12u$(xsmall)">
            <input name="name" placeholder="Name" type="text" />
        </div>
        <div class="6u$ 12u$(xsmall)">
            <input name="address" placeholder="Address" type="text" />
        </div>
        <div class="6u 12u$(xsmall)">
            <input name="mobile" placeholder="Mobile or Landline" type="text" />
        </div>
        <div class="6u$ 12u$(xsmall)">
            <input name="email" placeholder="Email" type="email" />
        </div>
        <div class="12u$">
            <textarea name="message" rows="6"></textarea>
        </div>
    </div>
    <ul class="actions">
        <li><input type="submit" name="submit" value="Send message" /></li>
    </ul>
</form>

错误是

  1. submit 中缺少属性(name="submit"
  2. 没有使用$mailContent
  3. 邮件正文中没有结束标签(缺少&lt;/body&gt;&lt;html&gt;
  4. action="&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;" 声明错误

【讨论】:

  • @Chandana 乐于助人:)
【解决方案2】:

试试这个:

<ul class="actions">
    <li><input type="submit" value="Send message" name="submit" /></li>
</ul>

为提交按钮提供“名称”。否则你的isset($_POST['submit'] 将无法工作

【讨论】:

    【解决方案3】:

    这种情况在您的代码中失败

    if(isset($_POST['submit']))
    

    您需要为您的提交按钮提供名称属性,它会起作用 &lt;input type="submit" name="submit" value="Send message" /&gt;

    【讨论】:

      【解决方案4】:

      改变这一行

      <input type="submit"  name="submit" value="Send message"/>
      

      【讨论】:

      • 这与所有准备好的答案有什么不同?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2012-07-02
      • 2014-05-29
      相关资源
      最近更新 更多