【问题标题】:sending an email with form发送带有表格的电子邮件
【发布时间】:2016-04-29 22:28:35
【问题描述】:

我正在尝试使用 PHP 制作联系表格。这段代码不应该工作,还是我在监督什么?它有点基本,但我只是想先让它工作。

<div>
            <p id="feedback"><?php echo $feedback;?></p>
            <form action="?" method="post">
                <ul>
                    <li>
                        <label for="name">Name:</label>
                        <input type="text" name="name" id="name">
                    </li>
                    <li>
                        <label for="email">Email:</label>
                        <input type="text" name="email" id="email">
                    </li>
                    <li>
                        <label for="message">Message:</label>
                        <textarea id="message" name="message" cols="42" rows="9"></textarea>
                    </li>
                    <li>
                        <input type="submit" value="Submit">
                    </li>
                </ul>
            </form>
        </div>

<?php

$to = 'xxxx@gmail.com';
$subject = 'This came from the other world';

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$header = '$email';

if($_POST) {
    mail($to, $subject, $message, $header);
    $feedback = 'Your Message has been send';
}
?>

【问题讨论】:

    标签: php post


    【解决方案1】:

    改变这个

    <input type="submit" value="Submit" name="submit"> # add name field
    

    在您的邮件代码中

    if (isset($_POST['submit'])) {
        $to = 'xxxx@gmail.com';
        $subject = 'This came from the other world';
    
        $name = $_POST['name'];
        $email = $_POST['email'];
        $msg = $_POST['message'];
    
        $message = "Customer Name : ".$name\r\n;
        $message .= "Customer Email : ".$email\r\n;
        $message .= "Customer Message : ".$msg\r\n;
    
        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        if (!mail($to, $subject, $message, $headers)) {
            echo "Sending Failed";
        }
        else{
            echo "Your Message has been send";
        }
    }
    

    如果您在 localhost 中发送邮件,请查看此

    1. XAMPP
    2. WAMP

    【讨论】:

    • 非常感谢您的评论。当我尝试更改我的代码时,我收到一个服务器错误 500。我实际上正在使用 MAPP,所以我必须看看这个。
    • @MadsKristensen 主持项目并检查。然后你可以检查
    • 好的,我会这样做的。我还没有域,所以我会等待这个功能。我只在本地主机上运行它。再次感谢:)
    【解决方案2】:

    您的标头需要包含实际的电子邮件标头,您只是在重复电子邮件地址。

    例子:

    $to      = 'nobody@example.com';
    $subject = 'the subject';
    $message = 'hello';
    $headers = 'From: webmaster@example.com' . "\r\n" .
        'Reply-To: webmaster@example.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
    
    mail($to, $subject, $message, $headers);
    

    documentation on the mail() function 将告诉您为什么标题和换行符很重要,并为您提供安全提示。

    【讨论】:

    • 非常感谢您的回答。我只是试图更改代码,但我仍然没有收到任何邮件。你认为这是因为我使用了我的本地主机吗?
    • 这篇 stackoverflow 帖子详细介绍了这一点:stackoverflow.com/questions/18288007/…
    【解决方案3】:

    尝试阅读此http://php.net/manual/de/function.mail.php

    我认为你的问题是这个代码行

    $header = '$email';
    

    您的标头将是字符串 $email 而不是 $email var 的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2014-09-14
      • 2019-07-20
      • 1970-01-01
      相关资源
      最近更新 更多