繁体   English   中英

如何从 PHP 而不是 CGI-Mailer 重播发件人电子邮件

[英]How to replay to sender email from PHP instead of CGI-Mailer

我尝试了太多不同的方法来从 $_request[email] 获得回复,但它一直使用 $from CGI-mailer 发送邮件,尽管我邮件中的所有正文都很好。我也尝试过很多方法,但我找不到我的问题在哪里..我在这里查看了这个问题的几个答案,但没有一个解决我的问题..这是我的代码。

<?php
$subject = 'Contacact from website'; 
$to = 'contact@myhosting.com'; 
$emailTo = $_REQUEST['email'];

// an email address that will be in the From field of the email.
$name = $_REQUEST['name'];
$email = $_REQUEST['email']; // i can't get this going to the reply-to section on the mail
$phone = $_REQUEST['phone'];
$msg = $_REQUEST['message'];

$email_from = $name.'<'.$email.'>';

$headers = "MIME-Version: 1.1";
$headers .= "Content-type: text/html; charset=utf-8";
$headers .= 'From:  ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
     'Reply-To: '.  $fromEmail . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

// Send email
mail($sendTo, $subject, $emailText, implode("\n", $headers));

$message .= 'Name : ' . $name . "\n";
$message .= 'Email : ' . $email . "\n";
$message .= 'phone : ' . $phone . "\n";
$message .= 'Message : ' . $msg;

if (@mail($to, $subject, $message, $email_from)) {
    // Transfer the value 'sent' to ajax function for showing success message.
    echo 'sent';
} else {
    // Transfer the value 'failed' to ajax function for showing error message.
    echo 'failed';
}
?>

这是我的表格:

<form name="contactForm" id='contact_form' method="post" action='email.php'>
    <div class="row">
        <div class="col-md-4">
            <div id='name_error' class='error'>write your name</div>
            <div>
                <input type='text' name='name' id='name' class="form-control" placeholder="Name">
            </div>

            <div id='email_error' class='error'>Write a valid email</div>
            <div>
                <input type='email' name='email' id='email' class="form-control" placeholder="
     email">
            </div>

            <div id='phone_error' class='error'>Write a phone number.</div>
            <div>
                <input type='tel' name='phone' id='phone' class="form-control" placeholder="Your name">
            </div>
        </div>
        <div class="col-md-8">
            <div id='message_error' class='error'>Please write your message here</div>
            <div>
                <textarea name='message' id='message' class="form-control"
                    placeholder="Message or quotation"></textarea>
            </div>
        </div>

        <div class="col-md-12">
            <p id='submit'>
                <input type='submit' id='send_message' value='Enviar' class="btn btn-line">
            </p>
            <div id='mail_success' class='success'>We received your message :)</div>
            <div id='mail_fail' class='error'>Please try again :/</div>
        </div>
    </div>
</form>

您发布的内容有一些错误。

首先,此代码块的第一行:

$message .= 'Name : ' . $name . "\n";
$message .= 'Email : ' . $email . "\n";
$message .= 'phone : ' . $phone . "\n";
$message .= 'Message : ' . $msg;

$message .=不应该有前导点,它应该读作:

$message = 'Name : ' . $name . "\n";

然后这一行:

if (@mail($to, $subject, $message, $email_from))

由于您使用$email_from作为最后一个参数, mail()就像您在发送邮件的另一个实例中所做的那样,使用的是有效的From:带有电子邮件地址,因为它来自“来自”,当第二个一个不包含那个,你只是把它声明为$email_from = $name.'<'.$email.'>'; .

您需要做的是添加From:就像您为第一个邮件实例所做的那样。

旁注: @符号是一个错误抑制器。 您可能希望在测试/开发期间删除它。

有关更多详细信息,请参阅有关mail()函数的手册:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM