我正在尝试获取电子邮件内容,并将其放入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”。 我不认为有任何错误。如果可以的话,请帮助我)
答案 0 :(得分:1)
此处查询:
$result = mysqli_query($conn, $query);
替换为:
$result = $conn->query($query);