PHP邮件程序编码问题

时间:2014-10-06 16:43:26

标签: php phpmailer

我遇到让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!";
}

1 个答案:

答案 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">
  • POST变量区分大小写。

您当前显示的代码具有适当的支撑。

使用error reporting并在打开<?php标记后立即放置文件顶部

error_reporting(E_ALL);
ini_set('display_errors', 1);

会发出Undefined index Submit...警告信息。