基于uid从gmail获取电子邮件数据

mfuanj7w  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(378)

我想从我的gmail帐户获取电子邮件详细信息并保存到mysql表中。我想根据uid来取电子邮件。但我没有得到要求的结果。有谁能告诉我,当一封新邮件到达我的gmail账户时,我如何取回邮件、主题、邮件正文。这是我的密码:

/* connect to server */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'myemail';
$password = 'mypassword';

/* try to connect */
$inbox = imap_open($hostname,$username,$password,OP_READONLY) or die('Cannot connect to Tiriyo: ' . imap_last_error());
//echo $inbox;
/* grab emails */
//$emails = imap_search($inbox,'ALL');
$latest_uid = 16; // Last UID inserted in my table 

$emails   = imap_search($inbox, 'ALL', SE_UID);
print_r($emails);
/* if emails are returned, cycle through each... */
if($emails) {

  /* begin output var */
  $output = '';

  /* put the newest emails on top */
  rsort($emails);

  /* for every email... */
  foreach($emails as $email_number) {
    //$email_number=$emails[0];
//print_r($emails);
    /* get information specific to this email */
    $message = imap_fetchbody($inbox,$email_number, 1);
    //echo $message;
    $overview = imap_fetch_overview($inbox,"1:{$email_number}");
   // $message = imap_fetchbody($inbox,$email_number,2);

    /* output the email header information */
   // $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
    $output.= '<span class="subject">'.$overview->subject.'</span> ';
    $output.= '<span class="from">'.$overview->from.'</span>';

     $output.= '<span class="from">'.$overview->uid.'</span>';

    $output.= '</div>';

    /* output the email body */
    $output.= '<div class="body">'.$message.'</div>';
  }

  echo $output;
}

/* close the connection */
imap_close($inbox);

我得到错误:

Notice: Trying to get property of non-object in C:\xampp\htdocs\imap\custom\index2.php on line 37

Notice: Trying to get property of non-object in C:\xampp\htdocs\imap\custom\index2.php on line 38

Notice: Trying to get property of non-object in C:\xampp\htdocs\imap\custom\index2.php on line 41

这是第37行:

$output.= '<span class="subject">'.$overview->subject.'</span> ';
p5cysglq

p5cysglq1#

试着改变现状 '' 为了 "" 这样地: $output.= "<span class='subject'>".$overview->subject."</span> "; 更多信息

x3naxklr

x3naxklr2#

我有一个链接可以帮你
http://php.net/manual/en/function.imap-search.php
有所有类型的条件和过滤器链接可用

ALL - return all messages matching the rest of the criteria
ANSWERED - match messages with the \\ANSWERED flag set
BCC "string" - match messages with "string" in the Bcc: field
BEFORE "date" - match messages with Date: before "date"
BODY "string" - match messages with "string" in the body of the message
CC "string" - match messages with "string" in the Cc: field
DELETED - match deleted messages
FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
FROM "string" - match messages with "string" in the From: field
KEYWORD "string" - match messages with "string" as a keyword
NEW - match new messages
OLD - match old messages
ON "date" - match messages with Date: matching "date"
RECENT - match messages with the \\RECENT flag set
SEEN - match messages that have been read (the \\SEEN flag is set)
SINCE "date" - match messages with Date: after "date"
SUBJECT "string" - match messages with "string" in the Subject:
TEXT "string" - match messages with text "string"
TO "string" - match messages with "string" in the To:
UNANSWERED - match messages that have not been answered
UNDELETED - match messages that are not deleted
UNFLAGGED - match messages that are not flagged
UNKEYWORD "string" - match messages that do not have the keyword "string"
UNSEEN - match messages which have not been read yet
$s_Date = "20 January 2018";
$b_Date = "10 December 2018"; 
$emails = imap_search($inbox,'SINCE "'.$s_Date.'" BEFORE"'.$b_Date.'"' );

现在你可以做你的愿望你需要一些改变
如下所示:

$emails = imap_search($inbox, 'NEW');
qqrboqgw

qqrboqgw3#

请尝试以下代码:

$mbox = imap_open("Hostname", "username", "password")
     or die("can't connect: " . imap_last_error());

$MC = imap_check($mbox);

// Fetch an overview for all messages in INBOX
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
foreach ($result as $overview) {
    echo "#{$overview->msgno} ({$overview->date}) - From: {$overview->from}
    {$overview->subject}\n";
}
imap_close($mbox);

告诉我结果。

相关问题