奇怪的问题 - 我的sendmail.php在桌面和移动设备上完美地工作只在请求桌面网站时(在Chrome应用中),但在使用移动网站时,他根本无法工作。< / p>
有人可以帮我解决这个问题吗?
这是代码:
<?php
if(isset($_POST['email'])) {
if (!check_email($_POST['email']))
{
echo 'Please enter a valid email address<br />';
}
else send_email();
}
exit;
function check_email($emailAddress) {
if (filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
return TRUE;
} else {
return FALSE;
}
}
function send_email() {
$message = "\nName: " . $_POST['name'] .
"\nEmail: " . $_POST['email'] ;
$message .= "\nMessage: " . $_POST['comment'] .
"\n\nBrowser Info: " . $_SERVER["HTTP_USER_AGENT"] .
"\nIP: " . $_SERVER["REMOTE_ADDR"] .
"\n\nDate: " . date("Y-m-d h:i:s");
$siteEmail = $_POST['receiver'];
$emailTitle = $_POST['subject'];
$thankYouMessage = "Thank you for contacting us, we'll get back to you shortly.";
if(!mail($siteEmail, $emailTitle, $message, 'From: ' . $_POST['name'] . ' <' . $_POST['email'] . '>'))
{
echo 'error';
}
else
{
echo 'success';
}
}
?>
答案 0 :(得分:0)
您必须确保移动表单包含以下两个元素:
使用method="POST"
提交。
您的电子邮件输入具有属性和值name="email"
。
我在以下代码中演示了这些内容的设置位置。这是不完整的,当然,它只是为了向您展示两个必需部分必须在哪里。
<form ... method="POST">
...
<input type="text" name="email" ... >
...
</form>
我还需要提一件事......
话虽这么说,你在这里做的是 非常不安全 。您允许某人在网络表单上设置电子邮件和两个地址。一个(不那么)聪明的黑客可以轻松编写脚本,将您的服务器变成一个开放的中继,用于垃圾邮件或其他恶意活动。至少,您应该删除$_POST['receiver']
并替换为硬编码的电子邮件地址,或至少不是最终用户在发布到您的表单时可以更改的内容。
答案 1 :(得分:0)
所以我深入研究,发现移动表单通过这个404文件指导提交。 现在的问题是,即使这个文件可用,也不会发送电子邮件......
'。为 “\ r \ n” 个; $ headers。= '来自:'。为 “\ r \ n” 个; $ headers ='MIME-Version:1.0'。 为 “\ r \ n” 个; $ headers。='Content-type:text / html; charset = utf-8'。为 “\ r \ n” 个; $ message。=“姓名:”。 $ name。 “
”; $ message。=“主题:” 。 $ subject。 “
”; $ message。=“电子邮件:”。 $ email。 “
”; $ message。=“消息:”。 $ message_text。 “
”; mail($ to,$ subject,$ message,$ headers,“ - f noreplay@info.com”); 回声1; } if(isset($ _ POST ['sendmail'])&amp;&amp; $ _POST ['sendmail'] == 1){ 发邮件(); }?&gt;