联系表格不发送电子邮件

时间:2012-04-21 02:47:05

标签: php html email email-validation

我的网站在“联系人”选项卡中有一个联系表单,它应该将邮件发送到我在submit.php文件中声明的电子邮件。不幸的是,我没有收到电子邮件或消息。有没有办法将联系表单邮件链接到特定的电子邮件。该网站是eagleview.it

如果您需要任何进一步的代码,请告诉我们。非常感谢你!

这是submit.php:

<?php

/* config start */

$emailAddress = 'samkamar@hotmail.com';

/* config end */


require "../php/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);
}

?>

1 个答案:

答案 0 :(得分:0)

关于你如何整理信息似乎有些不对劲。尝试使用sprintf(),如下所示:

$msg = sprintf("Name : %s <br/> Email : %s <br/>IP : %s <br/><br/> Message : %s"
                , $_POST['name'], $_POST['email'], $_SERVER['REMOTE_ADDR'], nl2br($_POST['message']));