【问题标题】:Contact Form Not Sending Emails [duplicate]联系表不发送电子邮件[重复]
【发布时间】:2012-05-02 14:24:32
【问题描述】:

我的网站在 Contact 选项卡中有一个联系表单,它应该将消息发送到我在 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);
}

?>

【问题讨论】:

  • 我想是因为你忘记了&lt;pixie-dust&gt; 标签。 (请添加一些代码。我们不是通灵者。)
  • 天哪……大写!我也没有在任何地方看到代码
  • 我怎样才能让它看起来不凌乱
  • 编辑您的问题并将其添加到代码标签中
  • 好的。这就是 submit.php

标签: php html email email-validation


【解决方案1】:

您如何整理信息似乎有些不对劲。尝试像这样使用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']));

【讨论】:

  • 好吧...把它代替这个对吗? '名称:'.$_POST['name'].'
    电子邮件:'.$_POST['email'].'
    IP:'.$_SERVER['REMOTE_ADDR']。'

    消息:

    '.nl2br($_POST['message']).' ';
猜你喜欢
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多