3

Zend Framework を使用して、Gmail アプリ アカウントからメールを読み取ろうとしています。Zend Framework dir をサーバー (パス: /Zend/library/) に転送しました。

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' => "name@domain.com", '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'     => 'mail@domain.com',
                                         '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

ユーザー名またはパスワードが間違っていると表示されます。これは、動作していたときから変更していないという奇妙な原因です...なぜこのエラーが発生するのですか?

4

5 に答える 5

2

Gmail の設定がややこしいです。試す:

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

注: gmail は、明らかに標準の SSL とは異なる SSL/TLS プロトコルを使用しています。

于 2012-04-12T15:22:21.083 に答える
1

フレームワークの基本を読んだり学んだりせずに Zend Framework を使い始めることができるとは本当に思いませんか? 少なくとも、オートローディング機能でフレームワークを使用する方法についてのクイックスタートを見てから、 Zend_Mail のドキュメント、より具体的には「メール メッセージの読み取り」と書かれている部分に飛び込んでください。

于 2012-04-12T09:21:51.507 に答える
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);
        }
    }
}
于 2012-04-12T15:27:29.390 に答える
1

私は同じ問題を抱えていましたが、この指示は私を助けてくれました。

  1. 影響を受ける Gmail アカウントにアクセスしているすべてのメール クライアントを終了します。これは、iPhone のメール アプリや、コンピューターなどから Gmail にアクセスしているその他の場所を意味します。

  2. ブラウザを開き、次のページに移動します: http://www.google.com/accounts/DisplayUnlockCaptcha

  3. 完全な Gmail アドレスとパスワードを入力し、画像に表示されている文字を入力します。ロック解除ボタンをタッチして、アカウントを確認します。

  4. Zend Framework を使用して、gmail アプリ アカウントからメールを読み取ってみてください。Gmail へのアクセスが復元されます。

于 2014-01-09T10:04:38.390 に答える