PHP表单不发送电子邮件
我有一个用html/css/jquery/ajax构建的预先制作的表单。这是相当多的复制和粘贴在我的联系页面暂时 这是我在contact.php页面上的html标记之前调用的内容PHP表单不发送电子邮件,php,jquery,html,css,forms,Php,Jquery,Html,Css,Forms,我有一个用html/css/jquery/ajax构建的预先制作的表单。这是相当多的复制和粘贴在我的联系页面暂时 这是我在contact.php页面上的html标记之前调用的内容 <?php session_name("fancyform"); session_start(); $_SESSION['n1'] = rand(1,20); $_SESSION['n2'] = rand(1,20); $_SESSION['expect'] = $_SESSION['n1']+$_SESS
<?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']);
}
?>
下面是css/html/jquery的JSFIDLE。页面加载良好,您可以填写字段并单击提交。它成功提交,但我没有收到电子邮件。拼写检查了必要的项目,但没有结果,没有电子邮件
非常感谢您的帮助。对不起,如果我遗漏了什么,这里是新的。尝试使用firebug查看是否有错误,但我没有收到任何错误
==编辑==
这是我的submit.php,现在我想知道它应该放在哪里?我不认为它实际上在我的网站上的任何地方调用它,这可以解释为什么没有发送电子邮件。现在我有点困惑了——使用PHP的第一天。我如何让它提交到代码中给出的电子邮件地址
<?php
/* config start */
$emailAddress = 'coreymaret@hotmail.com';
/* 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。设置起来非常简单:
var m=new mandrill.mandrill('your_api_key');
函数sendTheMail(){
m、 messages.send({
“信息”:{
“from_email”:document.getElementById('from_email')。值,
“from_name”:document.getElementById('from_name')。值,
“收件人”:[{“电子邮件”:“您的电子邮件”,“姓名”:“您的姓名”}],
“主题”:“可选值”,
“text”:document.getElementById('message')。值
}
});
}
然后你可以像这样设置你的联系人页面:
<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>
您的姓名:
您的电子邮件:
消息
发送
随机数生成器脚本也正常工作。应该发送电子邮件的部分具体在哪里?我没有在你的代码中看到它。你的php.ini文件看起来怎么样?Saturnix,我编辑了原始问题并包含了submit.php代码。John,也感谢你的帮助。我的目录中没有php.ini文件。我对PHP有点陌生。那到底是什么?奇怪。它一定是被垃圾邮件缠住了。我想知道它为什么不起作用……一切都写对了。只需尝试另一个电子邮件地址即可解决此问题。乌米尔,谢谢你。我是多么的忽视了这一点……有时候是这样的。我们必须一块一块地调试:)一些电子邮件提供商干脆忽略来自不可信来源的电子邮件。如果您的SMTP服务器配置不正确,并且您的“发件人”地址不是来自此SMTP,则很可能会被阻止。几个月前我和雅虎一起测试过这个。没有SMTP配置,我的电子邮件甚至无法进入垃圾邮件文件夹。