我正在尝试为我的网站设置一个简单的联系表单。表单的最终目标是让用户提交他们的信息并让服务器处理并发送电子邮件,就像它直接来自用户一样。换句话说,如果John Doe的电子邮件地址是johndoe@example.com,则填写表单,然后电子邮件就像John Doe从他的电子邮件地址johndoe@example.com发送的那样。对我来说令人难以置信的是,我认为我的服务器可能没有授权代表用户发送;但是,我试图摆脱的较旧的PHP表单执行得很好。
目前,这是我的邮件处理表格PHP:
<?php
if (($_SERVER['REQUEST_METHOD'] == 'POST') && (!empty($_POST['action']))):
if (isset($_POST['myname'])) { $myname = $_POST['myname']; }
if (isset($_POST['myemail'])) {
$myemail = filter_var($_POST['myemail'], FILTER_VALIDATE_EMAIL );
}
if (isset($_POST['mysubject'])) { $mysubject = $_POST['mysubject']; }
if (isset($_POST['mycomments'])) {
$mycomments = filter_var($_POST['mycomments'], FILTER_SANITIZE_STRING );
}
if (isset($_POST['reference'])) { $reference = $_POST['reference']; }
if (isset($_POST['requesttype'])) { $requesttype = $_POST['requesttype']; }
$formerrors = false;
if ($myname === '') :
$err_myname = '<div class="error">Sorry, your name is a required field</div>';
$formerrors = true;
endif; // input field empty
if ($mysubject === '') :
$err_myname = '<div class="error">Please enter a subject for your message.</div>';
$formerrors = true;
endif; // input field empty
if ( !(preg_match('/[A-Za-z]+, [A-Za-z]+/', $myname)) ) :
$err_patternmatch = '<div class="error">Sorry, the name must be in the format: Last, First</div>';
$formerrors = true;
endif; // pattern doesn't match
if (!($formerrors)) :
$to = 'example@example.com';
$subject = "$mysubject";
$message = "\nName: $myname\n\nEmail: $myemail\n\nSubject: $mysubject\n\nComments: $mycomments\n";
$from = $myname.'<'.$myemail.'>';
$headers = 'From: '.$from."\r\n".
'Reply-To: '.$myemail."\r\n";
if (mail($to, $subject, $message, $headers)):
$msg = "Thanks for filling out our form";
else:
$msg = "Problem sending the message";
endif; // mail form data
endif; // check for form errors
endif; //form submitted
?>
目前回复工作正常,但通过表单收到的电子邮件表明LastName@hostdomain.com。感谢您的贡献。