Gmail IMAP问题

时间:2014-03-17 08:06:59

标签: php imap

我正在尝试创建一个PHP脚本来查看我的Gmail帐户。

我已成功登录,但发现了一些我不确定的问题

登录脚本:(我已连接)

     $hostname = '{imap.gmail.com:993/imap/ssl}';
     $username = "USERNAME@gmail.com";
     $password = "PASSWORD";
     /* try to connect */
     $hostname = '{imap.gmail.com:993/ssl}[Gmail]/All Mail';

     /* try to connect */
     $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

循环浏览我的电子邮件的代码: -

     $emails = imap_search($inbox,'ALL');
     /* if emails are returned, cycle through each... */
     if($emails) {
     echo "FOUND EMAIlS<br />\n";
      $x=0;
      foreach ($emails as $ab => $email_number)
      {
      echo "'$ab '$email_number'<br />\n";
      $overview = imap_fetch_overview($inbox,$email_number,0);
      echo " &nbsp; Ov = '$overview'<br />\n";

(我有一个$ x的计数器,用于在20封电子邮件后停止脚本)

问题1: -

如果我使用print_r($overview);它完全正常 - 但如果我在$overview上使用foreach循环,我会收到错误: -

  

捕获致命错误:类stdClass的对象无法转换为(PATHNAME)第37行中的字符串

好奇 - 为什么我可以在数组上使用print_r,但不能使用foreach?有什么原因吗?

问题2: -

&#34;来自&#34;结果显示了该人的姓名 - &#34; john smith&#34;。有没有办法获取电子邮件地址?

(我确实在TO字段中看到了一些电子邮件地址,如果我没有在我的联系人中找到它们,但在FROM字段中没有。)

问题3:

我几小时前找到了谷歌搜索(但忘了给它添加书签),你可以使用常规的MYSQLI命令来搜索电子邮件,但我无法通过PHP脚本进行连接。所以我开始搜索workig连接脚本。

是否有不同的连接方式,所以我们可以使用常规的MYSQL命令?

终极目标:检索所有FROM&#34;电子邮件地址的列表&#34; (不是发件人的姓名),也可能是电子邮件的数量?

我有30,000多封电子邮件,&amp;可以通过一个cron-job在一段时间内完成这个过程 - 建立一个列表。

编辑:当我插入print_r命令时,FROM名称的电子邮件地址不是检索到的其中一个

编辑:添加了imap_open行

编辑:输出PRINT_R($输出);

     Array
     (
         [0] => stdClass Object
             (
                 [subject] => subject line of email
                 [from] => From name
                 [to] => emailaddress@toperson.com
                 [date] => Sat, 10 Jul 2004 03:13:12 +1200
                 [message_id] => <9a3273a0040709081340933b3a@mail.gmail.com>
                 [size] => 1132
                 [uid] => 27
                 [msgno] => 21
                 [recent] => 0
                 [flagged] => 0
                 [answered] => 0
                 [deleted] => 0
                 [seen] => 1
                 [draft] => 0
             )
     )

这是我最早的消息。它确实包括我发送消息TO的电子邮件地址,但不包括FROM的电子邮件地址(一些电子邮件是给我的 - 但仍然没有显示发件人的电子邮件地址)

1 个答案:

答案 0 :(得分:1)

您应该以这种方式阅读:

foreach($overview as $entry) {
  $subject = $entry->subject;
}