【发布时间】: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