PHP电子邮件表单更多字段

时间:2015-08-13 14:42:05

标签: php html email post

所以我有一个使用PHP的电子邮件表单:

<form method="post" action="contactus.php" autocomplete="off">
            <label for="Name">Name:</label>
            <input type="text" name="Name" id="Name" maxlength="60" required/>

            <label for="email">Email:</label>
            <input type="text" name="email" id="email" maxlength="120" required/>

            <label for="message">Message:</label><br />
            <textarea name="message" rows="20" cols="20" id="message" required></textarea>

            <input type="submit" name="submit" value="Submit" class="submit-button" />
        </form>

将PHP发送到我的电子邮箱:

<?php

if($_POST["submit"]) {

// The message
$message=$_POST["message"];

$email=$_POST["email"];

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Send
mail('myemail.com', 'Quick Pass', $message, $email);
}
?>

但问题只是&#39; myemail.com&#39; (这是我的电子邮件地址),&#39;快速通行证&#39; (电子邮件主题)和$ message(电子邮件)。 $ email未发送。

我试过了:

<?php
$to = "myemail.com";
$subject = "Quick Pass";
$message=$_POST["message"];
$email=$_POST["email"];

mail($to,$subject,$message,$email);
?>

有了这个,我收到了四封电子邮件(两封带有$ message,两封带有$ email)。

问题是我需要在一封电子邮件中完成所有这些操作。所以$ message与电子邮件中的某个地址一起发送。

有什么想法吗? (希望使用我的表格)

3 个答案:

答案 0 :(得分:1)

有一个例子,直接来自php手册,如下所示: -

$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);

第四个参数不仅仅是一个电子邮件地址 - 它是一个标题:值类型排列,使用\ r \ n

分隔多个标题

在您的代码中,您可以尝试: -

if($_POST["submit"]) {

    // The message
    $message=$_POST["message"];

    $email=$_POST["email"];

    $headers='From: '.$email."\r\n".
        'Reply-To: '.$email;

    // In case any of our lines are larger than 70 characters, we should use wordwrap()
    $message = wordwrap($message, 70, "\r\n");

    // Send
    mail('myemail@example.com', 'Quick Pass', $message, $headers );
}

答案 1 :(得分:0)

确保正确输入表单。试试这个。

// recipients
$to = 'to@example.com'; //your email address
$user_email = $_POST["email"]; //input from form
// subject
$subject = 'Subject';
// message
$message = $_POST["message"];
// set conent type
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: User Email <'.$user_email.'>' . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);

答案 2 :(得分:0)

正如之前的海报所说,标题的第四个参数id应该是&#34; From:{$ email}&#34;或类似的。

但是,邮件服务器有时会配置为忽略From标头并设置默认值。您还可以发现,如果发送地址与任何地址不匹配,则会在电子邮件路径的某处(由您的主机自己的中继服务器或您的电子邮件提供商的接收邮件服务器)忽略该邮件。相关域的DNS MX记录。您需要与您的托管服务提供商联系以进行调查。