【问题标题】:send copy of message (HTML/PHP)发送消息副本 (HTML/PHP)
【发布时间】:2016-08-10 03:07:43
【问题描述】:

如果我的联系页面的联系部分已填写,我有一个 php 文件需要向我发送电子邮件。以及是否发送消息副本的复选框。但是由于某种原因,如果选中该复选框,则邮件的发件人/制作者不会在其邮箱中收到此邮件的副本。

参见下面的代码。

亲切的问候

正在调用 PHP 文件

<?php 
//////////////////////////
//Specify default values//
//////////////////////////

//Your E-mail

$your_email = 'info@sano-tech.be';

//Default Subject if 'subject' field not specified
$default_subject = 'Van contact formulier';

//Message if 'name' field not specified
$name_not_specified = 'Geef een correcte naam in';

//Message if 'message' field not specified
$message_not_specified = 'Geeft een correcte boodschap in';

//Message if e-mail sent successfully
$email_was_sent = 'Versturen geslaagd!';

//Message if e-mail not sent (server not configured)
$server_not_configured = 'Sorry, mail server niet geconfigeerd';


///////////////////////////
//Contact Form Processing//
///////////////////////////
$errors = array();
if(isset($_POST['message']) and isset($_POST['username'])) {
    if(!empty($_POST['username']))
        $sender_name  = stripslashes(strip_tags(trim($_POST['username'])));

    if(!empty($_POST['message']))
        $message      = stripslashes(strip_tags(trim($_POST['message'])));

    if(!empty($_POST['email']))
        $sender_email = stripslashes(strip_tags(trim($_POST['email'])));

    if(!empty($_POST['subject']))
        $subject      = stripslashes(strip_tags(trim($_POST['subject'])));

    if(!empty($_POST['nummer']))
        $nummer      = stripslashes(strip_tags(trim($_POST['nummer'])));

    $sendcopy = $_POST['sendcopy'];

    //Message if no sender name was specified
    if(empty($sender_name)) {
        $errors[] = $name_not_specified;
    }

    //Message if no message was specified
    if(empty($message)) {
        $errors[] = $message_not_specified;
    }

    $from = (!empty($sender_email)) ? 'From: '.$sender_email : '';

    $subject = (!empty($subject)) ? $subject : $default_subject;

    //$message = (!empty($message)) ? wordwrap($message, 70) : '';

    $message = "
    Onderwerp: $subject

    Naam: $sender_name 

    E-mail: $sender_email 

    Nummer: $nummer

    Boodschap: 

    $message

    ";


    //sending message if no errors
    if(empty($errors)) {
        if($sendcopy == "yes")
        {
            if (mail($your_email, $subject, $message, $from) && mail($sender_email, $subject, $message, $from)) {
                echo $email_was_sent;
            } else {
                $errors[] = $server_not_configured;
                echo implode('<br>', $errors );
            }
        }
        else{
            if (mail($your_email, $subject, $message, $from)) {
                echo $email_was_sent;
            } else {
                $errors[] = $server_not_configured;
                echo implode('<br>', $errors );
            }
        }
    } else {
        echo implode('<br>', $errors );
    }
} else {
    // if "name" or "message" vars not send ('name' attribute of contact form input fields was changed)
    echo '"naam" en "bericht" variabelen zijn niet ontvangen door de server. Gelieve attributen hun "naam" te controleren';
}
?>

HTML(复选框)

<div class="sc_contact_form_item sc_contact_form_checkbox">
<input type="checkbox" name="sendcopy" value="yes" id="contact_form_checkbox" checked> Stuur mij een kopie van het bericht
</div>

到目前为止我做了什么:

1) 添加一个新的邮件账户:no-reply@domain.be

2) 添加了带有“Reply-To:”、“From:”和“X-Mailer:”的 $headers

它现在可以正常工作并在邮件中显示正确的地址。 但是,如果检查是为了发送副本,邮件仍然会在垃圾邮件文件夹中结束。我该如何解决这个问题?

【问题讨论】:

  • 将复选框 html 添加到您的问题中。
  • 糟糕,我的问题是用荷兰语写的,但你能把 HTML 代码也放上吗?
  • 你不能直接将邮件密送给发件人而不是发送两次吗?
  • 使用密件抄送会将收件人的电子邮件地址暴露给副本的收件人。这通常不是使用联系表单时的意图。
  • 使用在表单中输入的电子邮件地址作为发件人可能会出现问题。您基本上是从未经授权的邮件服务器为其他人发送电子邮件。这通常是将您的邮件视为垃圾邮件的一个重要因素。您应该使用自己域中的无回复地址作为发件人地址。

标签: php html contact-form


【解决方案1】:

邮件功能语法:

mail(to,subject,message,headers,parameters);

如何添加密件抄送

指定其他标题,例如 From、Cc 和 Bcc。附加标头应使用 CRLF (\r\n) 分隔。

注意:发送电子邮件时,必须包含 From 标头。这可以通过这个参数或在 php.ini 文件中设置。

示例

 $to = "name@mydomain.com";
 $subject .= "".$emailSubject."";
 $headers .= "Bcc: ".$emailList."\r\n";
 $headers .= "From: no-reply@thepartyfinder.co.uk\r\n" .
     "X-Mailer: php";
     $headers .= "MIME-Version: 1.0\r\n";
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
 $message = '<html><body>';
 $message .= 'THE MESSAGE FROM THE FORM';

     if (mail($to, $subject, $message, $headers)) {
     $sent = "Your email was sent!";
     } else {
      $sent = ("Error sending email.");
     }

为什么我的电子邮件会进入垃圾邮件文件夹?

  • 不要将您的电子邮件地址用作“发件人”电子邮件地址。

如果您发送一封“来自”您的电子邮件(比如说 test@activecampaign.com)的电子邮件,并且您将其发送给带有该电子邮件的联系人 (test@activecampaign.com),那么它肯定会被标记为垃圾邮件“从”和“到”是一样的。

  • 发送前请注意垃圾邮件过滤器测试。
  • 不要发送单个图形/图像
  • 不要使用免费的电子邮件地址作为您的“发件人”电子邮件
  • 测试不同的主题和电子邮件内容
  • 注意电子邮件中的链接
  • 不要包含使用链接缩短服务的链接
  • 花时间正确编写 HTML 代码
  • 删除不活跃的联系人
  • 使用一致的“发件人”电子邮件地址发送
  • 切勿在您的电子邮件中包含 Javascript、表单代码或视频
  • 避免直接从 Microsoft Word、Excel、 简报等。

【讨论】:

  • 我做的事情:1)添加一个新的邮件帐户:no-reply@domain.be 2)添加了带有'Reply-To:','From:'和'X-Mailer的$headers: ' 它现在可以正常工作并在邮件中显示正确的地址。但是,如果检查是为了发送副本,邮件仍然会在垃圾邮件文件夹中结束。我该如何解决这个问题?
  • 如果您通过自己的邮件服务器发送此邮件,您可能需要添加一个“发件人”标头,该标头将包含您自己域的电子邮件地址。 Gmail 可能会发送垃圾邮件,因为 FROM 地址是一个 gmail 地址,但不是从他们自己的服务器发送的。
  • 我已经说明了一些你需要交叉检查的理由
  • 您在哪里看到 Gmail?!顺便说一句,上述原因均不适用。
猜你喜欢
  • 2012-03-27
  • 2023-03-07
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2021-05-08
相关资源
最近更新 更多