我正在尝试从PHP页面发送邮件。我没有收到任何错误,但它没有回应我在代码中包含的验证错误/成功消息。我试图从Cloud9发送,这可能是不可能的,但它不应该至少显示我的成功/错误消息?
[ UPDATE ]现在它确实显示了我的错误消息,但每次提交时,即使我输入了所需的数据。没有信息天气发送失败与否。
PHP:
<?php
include 'includes/mail.php';
?>
<!DOCTYPE html>
...
<form action="?" method="post">
<input name="contact-name" type="text" placeholder="Ime" class="text-input">
<input name="contact-mail" type="email" placeholder="Email" class="text-input">
<textarea name="contact-text" placeholder="Poruka" class="text-input"></textarea>
<p id="submit-btn">
<button type=submit>
<img src="img/lmbtn.png" alt="submit button">
<span class="noselect">POŠALJI</span>
</button>
</p>
<?php
if (empty($errors) === true) {
if(isset($contact_text, $contact_name, $contact_mail)) {
$subject = "Mail from " . $contact_name ." via www.mysite.com";
$headers = "From: " . $contact_mail;
$sent = mail($to, $subject, $contact_text, $headers);
if ($sent) {
echo "<p>Poruka je poslata!</p>";
} else {
echo "<p>I dalje baguje.</p>";
}
}
} else {
?>
<ul>
<?php
foreach ($errors as $error) {
echo "<li>", $error, "</li>";
}
?>
</ul>
<?php
}
?>
</form>
...
包含mail.php:
<?php
$to = "mymail@gmail.com";
if (isset($_POST['contact-name'], $_POST['contact-mail'], $_POST['contact-text'])) {
if (empty($_POST['contact-name'])) {
$errors[] = "Molimo unesite Vaše ime";
} else {
$contact_name = htmlentities($_POST['contact-name']);
}
if (empty($_POST['contact-mail'])) {
$errors[] = "Molimo unesite Vašu email adresu.";
} else if (strlen($_POST['contact-mail']) > 60) {
$errors[] = "Vaša email adresa je predugačka.";
} else if (filter_var($_POST['contact-mail'], FILTER_VALIDATE_EMAIL) === false ) {
$errors[] = "Unesite validnu email adresu.";
} else {
$contact_mail = "<" . htmlentities($_POST['contact-mail']) . ">";
}
if (empty($_POST['contact-text'])) {
$errors[] = "Molimo unesite poruku.";
} else {
$contact_text = htmlentities($_POST['contact-text']);
}
}
?>
我没有包含css或javascript,我猜他们不相关。 JQuery只是在提交后重置表单。任何帮助,我尝试了stackoverflow和谷歌?
答案 0 :(得分:0)
邮件将通过服务器发送,因此您需要发布表单,服务器将邮寄并回复结果。
正在使用相同的php脚本生成邮件并发送邮件。
首先,当你打开页面时。服务器将生成表单,因为表单未发布。并且不会生成$ _POST变量。
但是当您尝试提交表单时,由于您设置了“return false”,因此无法提交表单。提交。
要在没有页面加载的情况下提交表单,您需要异步发送数据(使用Ajax,搜索Google以获取更多信息)
即使你删除“返回错误”代码也不会工作,因为mail()函数返回布尔值true和false但从不回应它。所以你可以var_dump它。
答案 1 :(得分:0)
试用简化版maby?
<?php
// Check for empty fields
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}
$name = $_POST['name'];
$email_address = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
// Create the email and send the message
$to = 'example@example.com'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "New Email: $name";
$email_body = "You have a new message.\n\n"."Details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "From: noreply@yourwebsite.com\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>
您确定您的服务器支持PhP邮件功能,对吗?
答案 2 :(得分:0)
请检查您的php.ini,请参阅http://php.net/manual/en/mail.configuration.php
在此文件中,您可以查看日志文件的位置,并检查是否所有内容都已正确配置。