У меня есть готовая форма, построенная из html/css/jquery/ajax. Скопировать и вставить в настоящее время на мою контактную страницу.
Это то, что я вызываю перед тегом html на странице contact.php.
<?php
session_name("fancyform");
session_start();
$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];
$str='';
if($_SESSION['errStr'])
{
$str='<div class="error">'.$_SESSION['errStr'].'</div>';
unset($_SESSION['errStr']);
}
$success='';
if($_SESSION['sent'])
{
$success='<h1>Success! We will be in contact!</h1>';
$css='<style type="text/css">#contact-form{display:none;}</style>';
unset($_SESSION['sent']);
}
?>
Вот jsFiddle для css/html/jquery. Страница загружается отлично, вы можете заполнить поля и нажать "Отправить". Он успешно отправляет, но я не получаю никакой электронной почты. Spell проверил необходимые предметы, но безрезультатно, никаких писем.
Любая помощь приветствуется. Извините, если я ничего не оставил - здесь новый. Пробовал использовать firebug, чтобы узнать, была ли ошибка, но я не получаю.
== EDIT ==
Это мой submit.php, который теперь мне интересно, где это должно быть? Я не думаю, что это на самом деле называет это на моем сайте, что объясняет, почему не отправляется электронное письмо. Теперь я немного запутался - первый день с PHP. Как я могу отправить его на адрес электронной почты, указанный в коде?
<?php
/* config start */
$emailAddress = '[email protected]';
/* config end */
require "phpmailer/class.phpmailer.php";
session_name("fancyform");
session_start();
foreach($_POST as $k=>$v)
{
if(ini_get('magic_quotes_gpc'))
$_POST[$k]=stripslashes($_POST[$k]);
$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}
$err = array();
if(!checkLen('name'))
$err[]='The name field is too short or empty!';
if(!checkLen('email'))
$err[]='The email field is too short or empty!';
else if(!checkEmail($_POST['email']))
$err[]='Your email is not valid!';
if(!checkLen('subject'))
$err[]='You have not selected a subject!';
if(!checkLen('message'))
$err[]='The message field is too short or empty!';
if((int)$_POST['captcha'] != $_SESSION['expect'])
$err[]='The captcha code is wrong!';
if(count($err))
{
if($_POST['ajax'])
{
echo '-1';
}
else if($_SERVER['HTTP_REFERER'])
{
$_SESSION['errStr'] = implode('<br />',$err);
$_SESSION['post']=$_POST;
header('Location: '.$_SERVER['HTTP_REFERER']);
}
exit;
}
$msg=
'Name: '.$_POST['name'].'<br />
Email: '.$_POST['email'].'<br />
IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br />
Message:<br /><br />
'.nl2br($_POST['message']).'
';
$mail = new PHPMailer();
$mail->IsMail();
$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "A new ".mb_strtolower($_POST['subject'])." from ".$_POST['name']." | contact form feedback";
$mail->MsgHTML($msg);
$mail->Send();
unset($_SESSION['post']);
if($_POST['ajax'])
{
echo '1';
}
else
{
$_SESSION['sent']=1;
if($_SERVER['HTTP_REFERER'])
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
}
function checkLen($str,$len=2)
{
return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]),"utf-8") > $len;
}
function checkEmail($str)
{
return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}
?>
Можете ли вы просто запустить submit.php в своем браузере? Или проверьте спам своей электронной почты и попробуйте с другим адресом электронной почты..
Вы также можете рассмотреть API Mandrill для электронной почты. Это очень просто настроить:
var m = new mandrill.Mandrill('your_api_key');
function sendTheMail(){
m.messages.send({
"message": {
"from_email": document.getElementById('from_email').value,
"from_name": document.getElementById('from_name').value,
"to":[{"email": "your_email", "name": "your_name"}],
"subject": "optional_value",
"text": document.getElementById('message').value
}
});
}
Затем вы можете настроить свою контактную страницу следующим образом:
<p>Your Name: <input type="text" id="from_name"></p>
<p>Your Email: <input type="email" id="from_email"></p>
Message<br><br><textarea rows=15 cols=50 id="message"></textarea><br>
<button onclick="sendTheMail();">Send</button>