使用php发送邮件如果($服务器[“请求”方法]==“发布”)

使用php发送邮件如果($服务器[“请求”方法]==“发布”),php,pdo,Php,Pdo,我有一个php邮件脚本,sendmail.php,当我使用一个简单的html脚本和if(isset($\u POST['btn\u send'])命令运行它时,它就可以工作了 但是我想将这个脚本集成到一个php表单脚本中,solliciteerform.php。 表单首先验证用户输入,当没有错误时,通过准备好的语句PDO将用户输入发送到my mysql db 我用的就是这个 if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslac

我有一个php邮件脚本,
sendmail.php
,当我使用一个简单的html脚本和
if(isset($\u POST['btn\u send'])
命令运行它时,它就可以工作了

但是我想将这个脚本集成到一个php表单脚本中,
solliciteerform.php
。 表单首先验证用户输入,当没有错误时,通过准备好的语句PDO将用户输入发送到my mysql db

我用的就是这个

if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== "") { 

          $servername = "xxxxx.eu.mysql";
          $username = "xxxxxx";
          $password = "xxxxx";

          try {
              $conn = new PDO("mysql:host=$servername;dbname=xxxxxx", $username, $password);
              // set the PDO error mode to exception
              $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

              /***
               irrelevant code 
               ***/

              if(move_uploaded_file($file_loc,$folder.$final_file)) 
              {

              // prepare sql and bind parameters
                $stmt = $conn->prepare("INSERT INTO sollicitatie_form (geslacht, voornaam, familienaam, email, tel, afile, type) 
                VALUES (:geslacht, :voornaam, :familienaam, :email, :tel, :final_file, :file_type)");

                $stmt->bindParam(':geslacht', $geslacht);
                $stmt->bindParam(':voornaam', $voornaam);
                $stmt->bindParam(':familienaam', $familienaam);
                $stmt->bindParam(':email', $email);
                $stmt->bindParam(':tel',$tel);
                $stmt->bindParam(':final_file', $final_file);
                $stmt->bindParam(':file_type', $file_type);


                $stmt->execute();

                ?>
                <script>
                alert('successfully uploaded');
                  window.location.href='thank.php';
                </script>
                <?php

                exit();
              }
            }
          catch(PDOException $e)
              {
              echo "Error: " . $e->getMessage();
              }

          $conn->null;
        }
但在数据发送到我的数据库之前

我尝试了两种解决方案,但都不奏效


解决方案1:

在我的
solliciteerform.php
的顶部添加
include('Send-HTML-mail-In-php/mailer/sendmail.php');

而不是在我的
sendmail.php中
I替换
if(isset($\u POST['btn\u send'])

与:

结果是,
solliciteerform.php
按预期运行,但我没有收到电子邮件


解决方案2:

在我的
solliciteerform.php
的顶部,我添加了:

 include ('Send-HTML-mail-in-PHP/mailer/class.phpmailer.php');
然后在:

 if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== ""){
我补充说:

 $mail = new PHPMailer(true);
那之后呢

if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== ""){
我已经粘贴了
sendmail.php
中的所有代码


当我这样做时,我的
solliciteerform.php
甚至没有运行。获取一个错误页面

对于我想要实现的目标,最好的解决方案是什么

在你的IF条件下,试着一次删除一个条件,看看是否可以修复它

if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== ""){
然后

然后

等等

最后,如果您已经在sendmail.php中创建了一个PHPMailer实例,那么就不需要重新创建它了……因为您已经在solliciteerform.php中包含了sendmail.php文件

因此,我将删除以下内容:

$mail = new PHPMailer(true);
希望这有帮助


-Rush

您遇到了哪些错误?@B.Desai,无法加载页面打开php错误报告。添加
错误报告(-1)
到脚本的开头。另外,您应该将邮件部分放在函数中,然后您可以在页面的开头包含包含函数的文件。并在需要时使用所需的变量调用它。不,您遇到了哪些PHP错误?也许您需要提高错误记录级别,但应该有一些错误记录错误消息的数量(可能在日志中)
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== ""){
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== ""){
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== ""){
$mail = new PHPMailer(true);