2012-04-12 63 views
3

我試圖通過使用Zend Framework從Gmail應用程序帳戶閱讀郵件。我剛剛將Zend Framework目錄轉移到我的服務器(路徑:/ Zend/library /)。閱讀與Zend框架的Gmail郵箱

如何加載Zend Framework和Mail模塊?如何進一步閱讀郵件?

我已經試過沒有結果如下:

$path = 'Zend/library/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

我相信語法讀取收件箱是一樣的東西:

$mail = new Zend_Mail_Storage_Imap(array('host' => 'imap.gmail.com', 'user' => "[email protected]", 'password' => "mypassword", 'ssl' => 'SSL')); 

編輯

下面的代碼作品:

$path = 'Zend/library/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

require_once 'Zend/Loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance(); 

$mail = new Zend_Mail_Storage_Imap(array('host'  => 'imap.gmail.com', 
             'user'  => '[email protected]', 
             'password' => 'password', 
             'ssl'  => 'SSL')); 
echo $mail->countMessages();` 

...但是當我嘗試回聲未讀郵件:

echo "Unread mails:\n"; 
foreach ($mail as $message) { 
    if ($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN)) { 
     continue; 
    } 
    // mark recent/new mails 
    if ($message->hasFlag(Zend_Mail_Storage::FLAG_RECENT)) { 
     echo '! '; 
    } else { 
     echo ' '; 
    } 
    echo $message->subject . "\n"; 
} 

我得到以下信息:

Fatal error: Uncaught exception 'Zend_Mail_Storage_Exception' with message 'cannot login, user or password wrong' in /var/www/zvinx.dk/test/Zend/library/Zend/Mail/Storage/Imap.php:279 Stack trace: #0 /var/www/zvinx.dk/test/gmail.php(11): Zend_Mail_Storage_Imap->__construct(Array) #1 {main} thrown in /var/www/zvinx.dk/test/Zend/library/Zend/Mail/Storage/Imap.php on line 279 

它說用戶名或密碼錯誤,這是奇怪的,因爲我沒有改變它的工作時間......這個錯誤怎麼發生的?

+0

嗯,我的錯誤信息很明顯'無法登錄,用戶名或密碼wrong' – Vytautas 2012-04-12 12:17:19

+0

事實上 - 但它工作得很好,當我剛剛呼應的消息的數量,但並不想呼應未讀消息時..它至少對我沒有任何意義.. – Christoffer 2012-04-12 12:21:31

+0

嘗試添加端口我猜測端口是'995' – Vytautas 2012-04-12 12:31:12

回答

1

你真的不覺得你可以在沒有閱讀/學習框架基礎知識的情況下開始使用Zend Framework嗎?至少看看quickstart關於如何使用具有自動加載功能的框架,然後深入到Zend_Mail documentation,更具體地說,「Reading Mail Messages

+0

Thx的鏈接 - 我現在幾乎已經工作。我已經用新問題更新了這個問題。 – Christoffer 2012-04-12 12:09:25

1

的部分gmail設置有點棘手。嘗試:

$mail = new Zend_Mail_Storage_Imap(array('host'  => 'imap.gmail.com', 
             'user'  => '[email protected]', 
             'port'  => '993', 
             'password' => 'password', 
             'ssl'  => 'tls', 
             'auth'  => 'login' 
             )); 

注:Gmail的使用SSL/TLS協議,這顯然是比標準SSL不同。

+0

@Greg Forbes我得到「無法連接到主機;錯誤=連接超時(errno = 110)」錯誤。我該怎麼辦 – mujaffars 2015-04-02 06:37:04

1

有登錄設置我用讀通過IMAP的電子郵件和轉儲附加文件

public function imapAction() 
{ 
    $config = array('host'=> 'imap.gmail.com', 
     'user' => 'xx', 
     'password' => 'xx', 
     'ssl' => 'SSL', 
     'port' => 993);//995 pop, imap 993 

    $mail = new Zend_Mail_Storage_Imap($config); 
    $maxMessage = $mail->countMessages(); 
    $this->logger->info($maxMessage); 

    for ($i = $maxMessage; $i <= $maxMessage; $i++) 
    { 
     $message = $mail->getMessage($i); 
     $this->logger->info($i.'Mail from '.$message->from.':'.$message->subject); 

     if($message->isMultipart()) 
     { 
      $this->logger->info("has attachments"); 
      $part = $message->getPart(2); 

      $cnt_typ = explode(";" , $part->contentType); 
      $name = explode("=",$cnt_typ[1]); 
      $filename = $name[1];//It is the file name of the attachement in browser 
      //This for avoiding " from the file name when sent from yahoomail 
      $filename = str_replace('"'," ",$filename); 
      $this->logger->info($filename); 

      $attachment = base64_decode($part->getContent()); 
      $fhandle = fopen($filename, 'w'); 
      fwrite($fhandle, $attachment); 
      fclose($fhandle); 
     } 
    } 
} 
1

我有同樣的問題,該指令已幫助了我。

  1. 退出正在訪問受影響的Gmail帳戶的所有郵件客戶端。這意味着iPhone上的郵件應用程序以及您正在訪問Gmail的其他任何地方,例如計算機。

  2. 打開瀏覽器,然後導航到該頁面:http://www.google.com/accounts/DisplayUnlockCaptcha

  3. 輸入完整的Gmail地址,密碼,並輸入您在圖片中看到的字符。觸摸解鎖按鈕以驗證您的帳戶。

  4. 嘗試使用Zend Framework從Gmail應用程序帳戶讀取郵件。您的Gmail訪問權應該恢復。