同様の問題を抱えている人はたくさんいますが、誰も彼らの質問に答えていません。 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()はセキュリティ上の理由で無効になっています...
助けてください!!!
ポート99、SSL [〜#〜] imap [〜#〜]ポートが必要です。
ポート995はSSL POPポートです。
GmailのIMAPはポート993でのみアクセスできると思います。
$hostname = "{imap.gmail.com:993/imap/ssl/novalidate-cert}";
同じエラーが発生し、別の解決策を見つけました。ホストにデバッグ情報を追加しました:
"{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
リンクを開き、指示に従います。検索する
アプリが最新のセキュリティ標準をサポートしていない可能性があります。安全性の低いアプリがアカウントにアクセスできるように、いくつかの設定を変更してみてください。
リンクをクリックして、安全性の低いアプリへのアクセスを有効にします。
それからそれは私のために働きます。
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());
エラーがスローされない場合、これはサーバーへの接続に成功したことを意味します。これがお役に立てば幸いです。
Gmailアカウントから指定されたオプションを有効にして、別のデバイスまたはWebからGmailサーバーに接続する必要があります。 https://myaccount.google.com/lesssecureapps
2段階認証を設定してから、リクエストで使用するAPPパスワードを割り当てることができます(パスワードをアプリ用に提供されているものに置き換えるだけで、通常のパスワードは変更されません)。
これは、グーグルがスクリプトをブロックすることなく、任意のホストからスクリプトを実行するのに役立ちます(ログイン場所の変更のため)。