【问题标题】:get email data from Gmail on the base of UID根据 UID 从 Gmail 获取电子邮件数据
【发布时间】:2019-06-04 00:33:30
【问题描述】:

我想从我的 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> ';

【问题讨论】:

  • 第 37 行是什么?
  • 查看编辑问题
  • 你试过这个 $emails = imap_search($inbox, 'NEW ');我希望它能更好地帮助你。谢谢。

标签: php mysql email gmail imap


【解决方案1】:

试试这个代码:

$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);

告诉我结果。

【讨论】:

  • 它正在获取所有电子邮件
  • 您是否需要特定用户?
  • 不,我只想获取新邮件
【解决方案2】:

尝试将'' 更改为""

像这样:$output.= "&lt;span class='subject'&gt;".$overview-&gt;subject."&lt;/span&gt; ";

More info

【讨论】:

  • 尝试改变“”的''他们为什么要这样做?
【解决方案3】:

我有一个链接给你,它可以帮助你

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');

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2013-01-16
    • 2012-08-29
    相关资源
    最近更新 更多