使用 PHP 和 IMAP 连接到 Gmail
Connect to Gmail with PHP & IMAP
我已经从我的 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 功能的完整教程。
任何想法、解决方案或建议都会有所帮助。
首先检查您服务器上的日期和时间设置是否正确。
或者试试:
$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX',
这将阻止它尝试验证证书。
我可能会收到人们的反对票,他们告诉我这是不好的做法,因为这会让您容易受到中间人攻击。这是真的。
更新:
在互联网上搜索我的问题后,我没有找到完全解决我的问题的解决方案。虽然如果
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=en
如果您被阻止,这可能是因为 google 看到来自新设备的登录。
转到您的 google 帐户并检查
https://myaccount.google.com/device-activity
并让他们知道 'Unknown device is ok to use'.
我已经从我的 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 功能的完整教程。
任何想法、解决方案或建议都会有所帮助。
首先检查您服务器上的日期和时间设置是否正确。
或者试试:
$connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX',
这将阻止它尝试验证证书。
我可能会收到人们的反对票,他们告诉我这是不好的做法,因为这会让您容易受到中间人攻击。这是真的。
更新:
在互联网上搜索我的问题后,我没有找到完全解决我的问题的解决方案。虽然如果
1) 我用的是不安全的 $connect_to = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
2) 并允许 less secured apps
、
暂时解决了我的问题。
请检查这个https://support.google.com/accounts/answer/6010255?hl=en
如果您被阻止,这可能是因为 google 看到来自新设备的登录。
转到您的 google 帐户并检查 https://myaccount.google.com/device-activity 并让他们知道 'Unknown device is ok to use'.