Php 来自函数的邮件是否显示为未知发件人?

Php 来自函数的邮件是否显示为未知发件人?,php,html,email-validation,Php,Html,Email Validation,我试图在联系人表单上显示输入字段中的姓名,以显示提交电子邮件后输入的姓名,我在php中更改了标题,并且它已从cgi mailer更改为Unknown sender?如何让它显示从联系人表单发送电子邮件的人的姓名 谢谢 控制有效性等的表单进程php 连接表单html <?php include('form_process.php'); /*if (isset($_POST['contact-submit'])){ $url = 'https://

我试图在联系人表单上显示输入字段中的姓名,以显示提交电子邮件后输入的姓名,我在php中更改了标题,并且它已从cgi mailer更改为Unknown sender?如何让它显示从联系人表单发送电子邮件的人的姓名

谢谢

控制有效性等的表单进程php

连接表单html

 <?php include('form_process.php');
        /*if (isset($_POST['contact-submit'])){

            $url = 'https://www.google.com/recaptcha/api/siteverify';
            $privatekey = "secretkeygoogle";

            $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADOR']);

            $data = json_decode($response);

            if(isset($data->success) AND $data->success==true) {

            }else{

            }


        }*/


    ?>
    <div class="home-btn"><a href="http://testsiteclash.co.uk/"><i class="fas fa-home"></i></a></div>
    <div class='grey'>
        <div class="container-contact">
            <form id="contact" method="post">
                <div id="column-contact-left">
                <div class='contact-logo'></div>
                <h3>Contact the Devon Food Movement</h3>
                <fieldset>
                    <input placeholder="Your name" type="text" tabindex="1" name="name1" value="<?= $name ?>" autofocus>

                </fieldset>
                <span class="error"><?= $name_error ?></span>
                <fieldset>
                    <input placeholder="Your Email Address" type="text" name="email" value="<?= $email ?>" tabindex="2" >

                </fieldset>
                <span class="error"><?= $email_error ?></span>
                </div>
                <div id="column-contact-right">
                <fieldset>
                    <textarea placeholder="Type your Message Here...." name="message" value="<?= $message ?>" tabindex="3" ></textarea>
                </fieldset>
                <div class="g-recaptcha" data-sitekey="needtoinput" ></div>
                <span class="success"><?= $success; ?></span>
                <fieldset>
                    <button name="submit" type="submit" id="contact-submit" data-submit="...Sending">Submit</button>
                </fieldset>
                </div>
            </form>
        </div>
    </div>

您的表单上必须有必填字段,如果需要,也可以询问姓名

   <?php
   function defaultMailing($to, $subject, $txt, $headers){
             if(mail($to, $subject, $txt, $headers)) return true; else return false;
    }
        ?>
如果要在邮件中插入已发布的名称,只需在需要的任何位置修改$txt var设置$_POST['name'],然后继续进行defaultMailing调用,例如:

$to = $_POST['to'];
$subject = $_POST['subject'];
$txt = $_POST['message'];

$name = $_POST['name'];    
$mailMessage = $name.' '.$txt;
//call to mail function and send the required (to, subject and text/html message) and the optional headers if you want
defaultMailing($to, $subject, $mailMessage, $headers);

结算电子邮件为发件人,因为发件人值必须是有效的电子邮件地址

            if ($name_error == '' and $email_error == '' and ($res['success']) ){
            $message_body = '';
            unset($_POST['submit']);

            foreach ($_POST as $key => $value){
                $message_body .=  "$key: $value\n";
            }

            $email = $_POST['email'];
            $to = 'devonfoodmovement@gmail.com';
            $subject = 'Contact Form Submit';
            $headers = 'From:' . $email . "\n" . 'Reply-to: ' . $email . "\n"  ;
            if (mail($to, $subject, $message, $headers)) {
                $sent = "Message sent";
                $name = $email = $message = '';
            }

尝试创建一个邮件函数,而不是按原样调用它,然后从调用邮件函数的var返回名称并在需要的任何地方显示它。无需在变量上设置void值,因为它们在函数行为后将被标记为可重写。@Joelbonter我已更改了表单process php文件,现在它正在我的电子邮件收件箱中返回cgi mailer?我制作了一个单独的邮件功能首先,您需要为中的
指定一个有效的电子邮件地址。表单字段
name1
只要求用户输入他们的姓名,这不是有效的电子邮件地址。第二:不要尝试这个。这将极大地增加您的邮件被归类为垃圾邮件的可能性(因为您的服务器未注册为“允许”为用户的电子邮件所属的域发送电子邮件的服务器)-使用您的一个电子邮件地址发送邮件,该地址允许服务器发送;将用户的电子邮件地址放在
回复
字段中,以便接收者能够轻松回答。注意@CBroe建议。我认为你在试图“重新发明轮子”。按照预期的方式使用php邮件功能,如果您希望显示“谢谢,Joe发送您的邮件”或类似内容,请按照我告诉您的方式执行并捕获名称,但不要修改邮件功能的默认行为,这可能是一个真正令人头痛的问题,你正在寻求一些简单的东西…它目前正在设置我的个人电子邮件地址作为我的电子邮件客户端中的发件人,因为我有变量$email作为发件人:我不试图回复发电子邮件的人,尽管只是在我的电子邮件客户端中显示他们的姓名,并将回复功能设置为轻松回复与我联系的人?这似乎是在收到电子邮件后发送响应?为了方便响应,您必须使用“回复到”字段,名称是可选的,您可以显示它,但在任何情况下都不能将其用作“密钥”或“id”。您可以将邮件地址与以前使用的用户名联系起来,但您可能需要将其存储在任何位置(如果不是这样,您每次都必须遍历所有邮件文件,并且在某些天可能会像fck一样慢)。我不知道我们是否理解你想要的东西,我也不确定你是否拿着纸和笔,逻辑地思考……:(啊,好的,所以我的表单中需要的名称字段基本上是用于验证的,但是我会使用reply to来显示发件人的电子邮件地址,并使其可能通过电子邮件回复发送查询的用户?因此,尝试在我的电子邮件客户端中显示表单中输入的名称作为from(粗体)基本上是没有意义的?是因为名称的变量在顶部设置为空字符串吗?配置from时,它将返回未知发件人的原因?是的,我现在已将其全部工作完毕,但它将未知发件人作为from返回,因为我认为它将$name的顶部变量作为空字符串。我使用“\n”解决了其他问题分离信息
   <?php
   function defaultMailing($to, $subject, $txt, $headers){
             if(mail($to, $subject, $txt, $headers)) return true; else return false;
    }
        ?>
$to = $_POST['to'];
$subject = $_POST['subject'];
$txt = $_POST['message'];
//you don't need name, but if you asked for on the form:
$msg = "thanks, ".$_POST['name']." for your message, your request will be answered soon.";

//call to mail function and send the required (to, subject and text/html message) and the optional headers if you want
defaultMailing($to, $subject, $txt, $headers);

//do whatever you want with $msg or with $_POST['name'];
$to = $_POST['to'];
$subject = $_POST['subject'];
$txt = $_POST['message'];

$name = $_POST['name'];    
$mailMessage = $name.' '.$txt;
//call to mail function and send the required (to, subject and text/html message) and the optional headers if you want
defaultMailing($to, $subject, $mailMessage, $headers);
            if ($name_error == '' and $email_error == '' and ($res['success']) ){
            $message_body = '';
            unset($_POST['submit']);

            foreach ($_POST as $key => $value){
                $message_body .=  "$key: $value\n";
            }

            $email = $_POST['email'];
            $to = 'devonfoodmovement@gmail.com';
            $subject = 'Contact Form Submit';
            $headers = 'From:' . $email . "\n" . 'Reply-to: ' . $email . "\n"  ;
            if (mail($to, $subject, $message, $headers)) {
                $sent = "Message sent";
                $name = $email = $message = '';
            }