发送电子邮件和写入数据库不工作

问题描述:

我有一个表格,允许非用户的消息,脚本采取的形式内容,将它们存储在我的messages表中,然后最终通过电子邮件发送给用户的内容他们的电邮地址。发送电子邮件和写入数据库不工作

我很难弄清楚为什么我的表单不会提交并返回错误信息,我没有正确地完成设置。没有电子邮件正在发送,并且没有正在进行的数据库表中。

我的表单代码;

<form class="signup-form" action="sendmail.php" id="email_submit" method="POST"> 
<fieldset> 
<input type="text" name="msg_touserid" id="msg_touserid" value="<?php echo htmlentities($_GET["uid"], ENT_QUOTES, 'UTF-8'); ?>" style="display: none;"> 
<input type="text" name="msg_tousername" id="msg_tousername" value="<?php echo htmlentities($_GET["username"], ENT_QUOTES, 'UTF-8'); ?>" style="display: none;"> 
<input type="text" placeholder="Your name..." name="msg_fromname" id="msg_fromname" value=""><br /> 
<input type="text" placeholder="Your mobile number..." name="msg_mobile" id="msg_mobile" value=""><br /> 
<input type="email" name="msg_toemail" id="msg_toemail" value="[email protected]" style="display: none;"> 

<input type="email" placeholder="Your email..." name="msg_fromemail" id="msg_fromemail" value=""><br /> 
<input type="text" placeholder="Message subject..." name="msg_subject" id="msg_subject" value=""><br /> 
<textarea name="msg_messagebody" id="msg_messagebody" style="height: 282px; background-image: none; background-position: 0px 50%; background-repeat: repeat;"></textarea> 
</fieldset> 
<input type="submit" class="btn-colored submit-send-email" value="Send email" /> 
</form> 

我的sendmail.php代码;

$connection = mysql_connect('localhost', 'XXX', 'XXX'); 
    if (!$connection){ 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db('DB'); 
    if (isset($_POST['email_submit'])){ 
     $msg_touserid = $_POST['msg_touserid']; 
     $msg_tousername = $_POST['msg_tousername']; 
     $msg_fromname = $_POST['msg_fromname']; 
     $msg_mobile = $_POST['msg_mobile']; 
     $msg_toemail = $_POST['msg_toemail']; 
     $msg_fromemail = $_POST['msg_fromemail']; 
     $msg_subject = $_POST['msg_subject']; 
     $msg_messagebody = $_POST['msg_messagebody']; 

     $sql = "INSERT INTO messages (msg_touserid, msg_tousername, msg_fromname, msg_mobile, msg_toemail, msg_fromemail, msg_subject, msg_messagebody) 
       VALUES ('$msg_touserid', $msg_tousername', '$msg_fromname', '$msg_mobile', '$msg_toemail', '$msg_fromemail', '$msg_subject', '$msg_messagebody')"; 
     if (!mysql_query($sql,$connection)){ 
      die('Error: ' . mysql_error()); 
     } 

     $emailID = "$msg_toemail"; 
     $subject = "Enquiry from. $msg_fromname . through our website"; 
$body = <<<EOD 

     <table cellspacing="0" cellpadding="1" border="1"> 
      <tbody> 
       <tr> 
        <td style="padding: 5px 10px;" width="150">Name: </td> 
        <td style="padding: 5px 10px;">$msg_fromname</td> 
       </tr> 
       <tr> 
        <td style="padding: 5px 10px;" width="150">Mobile: </td> 
        <td style="padding: 5px 10px;">$msg_mobile</td> 
       </tr> 
       <tr> 
        <td style="padding: 5px 10px;" width="150">Email: </td> 
        <td style="padding: 5px 10px;">$msg_fromemail</td> 
       </tr> 
       <tr> 
        <td style="padding: 5px 10px;" width="150">Message: </td> 
        <td style="padding: 5px 10px;">$msg_messagebody</td> 
       </tr> 
      </tbody> 
     </table> 

EOD; 

     $headers = "From: [email protected]\r\n"; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
     $headers .= "X-Priority: 1\r\n"; 
     $headers .= "X-MSMail-Priority: High\n"; 
     $headers .= "X-Mailer: PHP". phpversion() ."\r\n"; 

     mail($emailID, $subject, $body, $headers); 
     echo "<h4>Thank you for your message.</h4>"; 

    } else { 
     echo("Oops... Please check you have completed the form correctly."); 
    }; 

我的数据库结构;

id      int(10) (AI) 
msg_touserid   int(10) 
msg_tousername   varchar(100) 
msg_fromname   varchar(100) 
msg_mobile    varchar(20) 
msg_toemail    varchar(100) 
msg_fromemail   varchar(100)  
msg_subject    varchar(200) 
msg_messagebody   varchar(1000) 
msg_sent    timestamp 
+0

'if(isset($ _ POST ['email_submit'])){...}'永远不会启动,并且http://php.net/manual/en/function.error-reporting.php本来会告诉你的;-) –

+1

[** SQL注入警报**](http://*.com/q/60174/) –

提交按钮没有name属性。

<input type="submit" class="btn-colored submit-send-email" value="Send email" /> 

因此,condtion

if (isset($_POST['email_submit'])){ 

是不令人满意的。

解决方案:

添加name提交按钮。

更正代码:

<input type="submit" class="btn-colored submit-send-email" value="Send email" name="email_submit" /> 
+0

谢谢。这似乎已经取得了进展,但后来我意识到我错过了一个数据库的选择,所以我添加了它,但现在得到一个语法错误。我已经更新了上面的sendmail.php代码以反映更改。 –

这不是提交/发送电子邮件,因为它从未有过的机会。

if (isset($_POST['email_submit'])){

永远不会满足的email_submit没有在您的形式定义。您将其设置为表格ID ,但ID不会以与name相同的方式传递给$_POST

给你的提交按钮的email_submit的名称在您的形式:

<input name="email_submit" type="submit" class="btn-colored submit-send-email" value="Send email"> 

既然初始条件将满足。