我遇到让PHP邮件代码正常工作的问题。我可以让它在页面加载时发送一封电子邮件,问题在于ISSET命令让它在按下提交按钮后提交表单。我已经尝试过把它放在不同的地方,但仍然无法让它发挥作用。任何帮助将不胜感激。
<?php
require '/phpmailer/PHPMailerAutoload.php';
require_once '/phpmailer/class.phpmailer.php';
include '/phpmailer/class.smtp.php';
if(isset($_POST["Submit"]))
{
$emailaddress = '****@**********';
$message=
'Name: '.$_POST['name'].'<br />
Email: '.$_POST['email'].'<br />
IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br />
Message:<br /><br />
'.nl2br($_POST['message']).'
';
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "********"; // SMTP server
$mail->SMTPDebug = 1; // 1 = errors and messages,2 = messages only
$mail->SMTPAuth = false; // enable SMTP authentication
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->SMTPSecure = 'false'; // Enable encryption, 'ssl' also accepted
$mail->CharSet = 'UTF-8'; // so it interprets foreign characters
$mail->setFrom('***********');
$mail->AddReplyTo('**********');
$mail->Subject = "Contact form submission from ".$_POST['name']." ";
$mail->MsgHTML($message);
$mail->AddAddress($emailaddress);
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Thank you, your message has been sent!";
}
答案 0 :(得分:0)
我将把我的评论作为答案,因为这是我能够提出并且最有可能的唯一结论,而不会看到OP的HTML表单。
您的条件语句if(isset($_POST["Submit"]))
基于名为Submit
的提交按钮。如果您的提交按钮有name="submit"
而不是name="Submit"
,那么就可以解释它。如果没有命名,则执行。
即:
<input type="submit" name="Submit" value="Send Email">
与
不同<input type="submit" name="submit" value="Send Email">
您当前显示的代码具有适当的支撑。
使用error reporting并在打开<?php
标记后立即放置文件顶部
error_reporting(E_ALL);
ini_set('display_errors', 1);
会发出Undefined index Submit...
警告信息。