当一切正常时失败

时间:2018-07-21 08:35:04

标签: php mysqli imap

我正在尝试获取电子邮件内容,并将其放入mysqli表中。 基本上是其coinpayments电子邮件,当有存款到一个地址时发送。由于他们没有用于存款历史的api,因此我尝试开发一种电子邮件阅读器,该阅读器可以读取电子邮件并将地址,用户名和txid放入存款表中。爆炸成数组的电子邮件看起来像这样

 Array ( [0] => -----BEGIN [1] => PGP [2] => SIGNED [3] => MESSAGE-----Hash: 
 [4] => SHA256Hello [5] => an user [6] => deposit [7] => of [8] => 
 an amount [9] => LTCT [10] => has [11] => been [12] => received [13] => 
 and [14] => confirmed [15] => into [16] => your [17] => CoinPayments [18] 
 => Wallet. [19] => The [20] => deposit [21] => was [22] => received [23] => 
 on [24] => an address [25] => with [26] => 
 transaction [27] => ID [28] => 
 an txid.Thank [29] 
 => you [30] => for [31] => using [32] => CoinPayments.net!Support [33] => 
 is [34] => available [35] => at: [36] => https://www.coinpayments.net/help- 
 support-----BEGIN [37] => PGP [38] => SIGNATURE----- 
 END [39] => PGP [40] => SIGNATURE----- )

现在,我尝试使用imap获取最新的电子邮件,将其删除并将变量放入存款表中。

   <?php
   $hostname = "{imap.gmail.com:993/imap/ssl/novalidate-cert}Inbox";
   $username = 'username';
   $password = 'password';

    $inbox = imap_open($hostname,$username,$password) or die('Cannot connect: ' . imap_last_error());

  $emails = imap_search($inbox,'ALL');


  if($emails)
 {
$output = '';

rsort($emails);

  $email_number = $emails[0];
{


    $message = quoted_printable_decode(imap_fetchbody($inbox,$email_number,1.1)); 
    if($message == '')
    {
        $message = (imap_fetchbody($inbox,$email_number,1));
        $str =  "$message";
        $explode = (explode(" ",$str));
        $check = $explode[20];
        if ($check =='deposit') {
            $address = $explode[24];
            $textsplit = "$explode[28]";
            $split = (explode(".",$textsplit));
            $txid = $split[0];
            $signature = $explode[38];
            $date = date("Y-m-d");
            require ('setup.php');
                $conn = new mysqli($localhost, $hostuser, $hostpass, $hostdb) or die("conn died");
                $query1 = "SELECT user FROM addresses WHERE address = '$address'";  //Get username so i put it with txid in deposits table
               $result = $conn->query($query1);
                if ($result) {

             while ($row = mysqli_fetch_array($result)) {
              $user = $row['user'];
             }
                $query = "INSERT INTO deposits(tx, date, user, signature) VALUES('$txid', '$date', '$user', '$signature')";
                $result = mysqli_query($conn, $query);

    if($result) {
        echo 'inserted';
        $dl = imap_delete($inbox, $email_number);
        if ($dl) {
            echo 'deleted';
        }
        else {
            die('cant insert');
        }
    }
    else {
        die('failed1');
    }
        }
       else
       {
           die('failed');
       }


    }
}       
}
}

但是最后我得到“ failed1”。 我不认为有任何错误。如果可以的话,请帮助我)

1 个答案:

答案 0 :(得分:1)

此处查询:

$result = mysqli_query($conn, $query);

替换为:

$result = $conn->query($query);