web-dev-qa-db-ja.com

PHP&IMAPでGmailに接続する

_php.ini_ファイルからOpenSSLおよびIMAP関数を有効にし、phpinfo()がそれを確認します。

以下のコードを使用すると、Hotmailアカウントに接続できますが、Gmailアカウントには接続できません(もちろん、_$connect_to_をHotmailを指すように変更します)。

_$connect_to = '{imap.gmail.com:993/imap/ssl}INBOX';
$connection = imap_open($connect_to, $user, $password)
  or die("Can't connect to '$connect_to': " . imap_last_error());
imap_close($connection);
_

返されるエラーは

_Warning: imap_open(): Couldn't open stream {imap.gmail.com:993/imap/ssl}INBOX in /opt/lampp/htdocs/webmail_client_practise/index.php on line 6
Can't connect to '{imap.gmail.com:993/imap/ssl}INBOX': Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
Notice: Unknown: Certificate failure for imap.gmail.com: unable to get local issuer certificate: /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA (errflg=2) in Unknown on line 0
_

残念ながら、IMAP関数の使用方法に関する完全なチュートリアルは見つかりません。

アイデア、解決策、提案は役に立ちます。

11
Makis

UPDATE:

インターネットで問題を検索した後、問題を完全に解決する解決策が見つかりませんでした。でも

1)安全でない$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';を使用しています

2)_less secured appsによるGmailへのアクセスを許可します

今のところ私の問題を解決します。

これを確認してください https://support.google.com/accounts/answer/6010255?hl=ja

16
Makis

ブロックされた場合、Googleが新しいデバイスからのログインを確認していることが原因である可能性があります。

Googleアカウントに移動して https://myaccount.google.com/device-activity を確認し、「不明なデバイスは使用しても問題ない」と伝えます。

2
Johan Velthuis

まず、サーバーの日付と時刻の設定が正しいことを確認してください。

または、次を試してください:

$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX',

これにより、証明書を検証しようとしなくなります。

Man in the Middleの攻撃にさらされる可能性があるため、これは悪い習慣だと言っている人からの反対票をおそらく受け取るでしょう。それは本当です。

1
Antony D'Andrea