web-dev-qa-db-ja.com

GmailIMAPへの接続PHP "ストリームを開くことができませんでした"

同様の問題を抱えている人はたくさんいますが、誰も彼らの質問に答えていません。 PHPでIMAPを有効にし、すべての正しい情報を使用しています。どこが間違っているのかわかりません。

これが私のコードです:

$hostname = '{imap.gmail.com:995/imap/ssl/novalidate-cert}'; 
$username = '[email protected]'; $password = 'password'; 
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

print_r(imap_errors());

以下以外のエラーを返さない:

警告:imap_open()[function.imap-open]:/ home/a8066360/public_html/test/imap.phpのストリーム{imap.gmail.com:995/imap/ssl/novalidate-cert}をオンラインで開くことができませんでした6

Gmailに接続できません:gmail-imap.l.google.comに接続できません。995:接続がタイムアウトしました

一重引用符を `に変更すると気づきました

Shell_exec()はセキュリティ上の理由で無効になっています...

助けてください!!!

12
cream

ポート99、SSL [〜#〜] imap [〜#〜]ポートが必要です。

ポート995はSSL POPポートです。

12
Max

GmailのIMAPはポート993でのみアクセスできると思います。

$hostname = "{imap.gmail.com:993/imap/ssl/novalidate-cert}";

6
Xhezairi

同じエラーが発生し、別の解決策を見つけました。ホストにデバッグ情報を追加しました:

"{imap.gmail.com:993/debug/imap/ssl/novalidate-cert}INBOX"; 

PHPエラーログを読んだところ、

Unknown: [ALERT] Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (errflg=1) in Unknown on line 0

リンクを開き、指示に従います。検索する

アプリが最新のセキュリティ標準をサポートしていない可能性があります。安全性の低いアプリがアカウントにアクセスできるように、いくつかの設定を変更してみてください。

リンクをクリックして、安全性の低いアプリへのアクセスを有効にします。

それからそれは私のために働きます。

2
MrGapo

SSLが適用されていない場合は、notls引数を指定し、次のようにサーバーに接続することで、次のコードを試すことができます。

$hostname = '{imap.YOUR_DOMAIN.com:143/imap/notls}INBOX'; 
$username = 'YOUR_USERNAME';
$password = 'YOUR_PASSWORD';

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

エラーがスローされない場合、これはサーバーへの接続に成功したことを意味します。これがお役に立てば幸いです。

0
Shahrukh Anwar

Gmailアカウントから指定されたオプションを有効にして、別のデバイスまたはWebからGmailサーバーに接続する必要があります。 https://myaccount.google.com/lesssecureapps

0
Amal

2段階認証を設定してから、リクエストで使用するAPPパスワードを割り当てることができます(パスワードをアプリ用に提供されているものに置き換えるだけで、通常のパスワードは変更されません)。

これは、グーグルがスクリプトをブロックすることなく、任意のホストからスクリプトを実行するのに役立ちます(ログイン場所の変更のため)。

0
Ryan Steyn