imap_open

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_open打开到邮箱的 IMAP

说明

imap_open(
    string $mailbox,
    string $user,
    string $password,
    int $flags = 0,
    int $retries = 0,
    array $options = []
): IMAP\Connection|false

打开到 mailboxIMAP 流。

此函数也可以用来打开到 POP3NNTP 服务器的流,但某些函数和功能仅在 IMAP 服务器上可用。

参数

mailbox

邮箱名称由服务器和该服务器上的邮箱路径组成。特殊名称 INBOX 代表当前用户的个人邮箱。包含除可打印 ASCII 空间以外的国际字符的邮箱名称必须使用 imap_utf7_encode() 编码。

警告

除非 imap.enable_insecure_rsh 被禁用,否则将不可信数据传递给此参数是不安全的。

服务器部分,用 '{' 和 '}' 包围,由服务器名称或 IP 地址、可选端口(以 ':' 为前缀)和可选协议规范(以 '/' 为前缀)组成。

服务器部分在所有邮箱参数中都是强制性的。

所有以 { 开头的名称都是远程名称,形式为 "{" remote_system_name [":" port] [flags] "}" [mailbox_name],其中

  • remote_system_name - 服务器的互联网域名或带括号的 IP 地址。
  • port - 可选 TCP 端口号,默认为该服务的默认端口
  • flags - 可选标志,请参见下表。
  • mailbox_name - 远程邮箱名称,默认为 INBOX

名称的可选标志
标志 说明
/service=service 邮箱访问服务,默认为 "imap"
/user=user 服务器上登录的远程用户名
/authuser=user 远程身份验证用户;如果指定了,则为使用其密码的用户(例如管理员)
/anonymous 以匿名用户身份进行远程访问
/debug 在应用程序的调试日志中记录协议遥测数据
/secure 不要通过网络传输明文密码
/imap, /imap2, /imap2bis, /imap4, /imap4rev1 等效于 /service=imap
/pop3 等效于 /service=pop3
/nntp 等效于 /service=nntp
/norsh 不要使用 rsh 或 ssh 建立预身份验证的 IMAP 会话
/ssl 使用 Secure Socket Layer 加密会话
/validate-cert 验证来自 TLS/SSL 服务器的证书(这是默认行为)
/novalidate-cert 不要验证来自 TLS/SSL 服务器的证书,如果服务器使用自签名证书,则需要此选项
/tls 强制使用 start-TLS 加密会话,并拒绝连接到不支持它的服务器
/notls 不要使用 start-TLS 加密会话,即使是支持它的服务器
/readonly 请求只读邮箱打开(仅限 IMAP;在 NNTP 上忽略,在 SMTP 和 POP3 上为错误)

user

用户名

password

user 关联的密码

flags

flags 是一个位掩码,包含以下一个或多个

retries

最大连接尝试次数

options

连接参数,可以使用以下(字符串)键设置一个或多个连接参数

  • DISABLE_AUTHENTICATOR - 禁用身份验证属性

返回值

成功时返回一个 IMAP\Connection 实例,失败时返回 false

变更日志

版本 说明
8.1.0 现在返回一个 IMAP\Connection 实例;以前返回的是 资源

示例

示例 #1 imap_open() 的不同用法

<?php
// 要连接到在本地机器上的端口 143 上运行的 IMAP 服务器,
// 请执行以下操作:
$mbox = imap_open("{localhost:143}INBOX", "user_id", "password");

// 要连接到本地服务器上的端口 110 上的 POP3 服务器,请使用:
$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");

// 要连接到 SSL IMAP 或 POP3 服务器,请在协议
// 规范之后添加 /ssl:
$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");

// 要连接到具有自签名证书的 SSL IMAP 或 POP3 服务器,
// 请在协议规范之后添加 /ssl/novalidate-cert:
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");

// 要连接到本地服务器上的端口 119 上的 NNTP 服务器,请使用:
$nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
// 要连接到远程服务器,请将 "localhost" 替换为您要连接到的服务器的名称或
// IP 地址。
?>

示例 #2 imap_open() 示例

<?php
$mbox
= imap_open("{imap.example.org:143}", "username", "password");

echo
"<h1>邮箱</h1>\n";
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

if (
$folders == false) {
echo
"调用失败<br />\n";
} else {
foreach (
$folders as $val) {
echo
$val . "<br />\n";
}
}

echo
"<h1>INBOX 中的邮件头</h1>\n";
$headers = imap_headers($mbox);

if (
$headers == false) {
echo
"调用失败<br />\n";
} else {
foreach (
$headers as $val) {
echo
$val . "<br />\n";
}
}

imap_close($mbox);
?>

另请参阅

添加说明

用户贡献的说明 37 个说明

php at dsgvoseidank dot de
2 年前
谷歌已于 2022 年 5 月 30 日停止支持用户/密码身份验证。
如果没有 xoauth2 的支持,imap_open 将无法再使用。
https://support.google.com/accounts/answer/6010255

有一个来自 2020 年的待办事项,但没有完成。
https://wiki.php.net/todo/ext/imap/xoauth2

唯一的方法是切换到第三方库“php-imap”。
太可惜了。
neekToO
1 年前
回复“dsgvoseidank”说它不再适用于 Gmail。

截至今天 2022 年 8 月 26 日,它仍在工作,但你需要使用谷歌参数为你的应用生成一个密码,用于 2FA 帐户。
kay at rrr dot de
14 年前
imap_open 使用起来很简单,但在使用 ssl 和 tls 的设置上会遇到一些困难。

以下是针对不同主机和协议的测试示例。

取消对主机/协议行的注释,并填写正确的用户名和密码。



<?php

#######
# 本地主机 pop3,带或不带 ssl
# $authhost="{localhost:995/pop3/ssl/novalidate-cert}";
# $authhost="{localhost:110/pop3/notls}";

# 本地主机 imap,带或不带 ssl
# $authhost="{localhost:993/imap/ssl/novalidate-cert}";
# $authhost="{localhost:143/imap/notls}";
# $user="localuser";

# 本地主机 nntp,带或不带 ssl
# 你必须指定一个现有的组,control.cancel 应该存在
# $authhost="{localhost:563/nntp/ssl/novalidate-cert}control.cancel";
# $authhost="{localhost:119/nntp/notls}control.cancel";

######
# web.de pop3,不带 ssl
# $authhost="{pop3.web.de:110/pop3/notls}";
# $user="[email protected]";

#########
# goggle pop3 或 imap
# $authhost="{pop.gmail.com:995/pop3/ssl/novalidate-cert}";
# $authhost="{imap.gmail.com:993/imap/ssl/novalidate-cert}";
# $user="[email protected]";

$user="如上所示的用户名";
$pass="你的密码";

if (
$mbox=imap_open( $authhost, $user, $pass ))
{
echo
"<h1>已连接</h1>\n";
imap_close($mbox);
} else
{
echo
"<h1>失败!</h1>\n";
}

?>
jeff at newscloud dot com
10 年前
Gmail IMAP SSL 身份验证问题之一与谷歌的帐户安全性有关。

如果你收到一次登录错误,请注销所有谷歌帐户。然后访问此链接
http://www.google.com/accounts/DisplayUnlockCaptcha

使用你要通过 imap 访问的帐户登录。

按照步骤操作,你就可以使用 php imap 登录到 gmail 了。

此处有可视化展示
http://jeffreifman.com/filtered-open-source-imap-mail-filtering-software-for-php/configuring-gmail/
guilherme dot geronimo at gmail dot com
13 年前
使用
<?php
imap_open
( "{server.example.com:143}INBOX" , 'login' , 'password' );
?>

出现以下错误
"无法打开流 {server.example.com:143}INBOX"

通过添加标志 "novalidate-cert" 解决
<?php
imap_open
( "{server.example.com:143/novalidate-cert}INBOX" , 'login' , 'password' );
?>

=D
hashampel at yahoo dot de
9 年前
INBOX 的子文件夹必须用点隔开,例如:'INBOX.test'
$mailbox = '{example.example.com:143/imap/novalidate-cert}INBOX.test'
dominic_mayers at yahoo dot com
7 年前
此代码演示了目前未在文档中详细说明的功能。主要功能是 imap_open(或 reopen)中选择的邮箱与其他 imap 函数中指定的邮箱无关。它已在 Gmail 和 Dovecot IMAP 服务器上测试。邮箱分隔符取决于服务器。Gmail:"/" Dovecot:"." 如果你想在 Gmail 上进行测试,你需要在你的帐户中启用“对安全性较低应用的访问权限”。

<?php
// 更改这些内容。
$server = "{imap.gmail.com:993/imap/ssl/novalidate-cert}";
$email = "[email protected]";
$password = "password";

// 代码假设文件夹 Test/Sub1/Sub11 等存在。
$selected = "{$server}Test/Sub1/Sub12";
$conn = imap_open($selected, $email , $password);

// 这将返回指定的邮箱及其子邮箱,
// 即使指定的邮箱不在选择的邮箱内。
$specified = "{$server}Test/Sub1";
$boxes = imap_list($conn, $specified , '*');
print_r($boxes);

// 这将在指定的邮箱中追加邮件。
// 它将忽略选择的邮箱。
imap_append($conn, $specified
, "From: [email protected]\r\n"
. "To: [email protected]\r\n"
. "Subject: test\r\n"
. "\r\n"
. "这是一条测试邮件,请忽略\r\n");

// 这将更改选择的邮箱
$selected = "{$server}Test/Sub1";
imap_reopen($conn, $selected);

// 这将把邮件从选择的邮箱移动到指定的邮箱
// 在这种情况下,指定的邮箱不包含服务器。
imap_mail_move ($conn , "1" , "Test");
imap_expunge($conn);
imap_close($conn);
// 如果你使用真实的 IMAP 服务器执行了此代码,
// 邮件现在将位于 Test 邮箱中!
?>
me at achronos dot ca
10 年前
不要在 $mailbox 中使用 "/debug" 标志或在 $options 中使用 OP_DEBUG。它们没有任何作用。

当你设置其中任何一个时,底层的 IMAP c-client 库将收集协议调试数据并将其传递回 PHP。
但是,PHP 定义的调试处理程序是一个空函数,它什么也不做。

因此,除非你使用自定义版本的 IMAP 扩展程序来处理该处理程序(mm_dlog),否则使用 "/debug" 或 OP_DEBUG 毫无意义。
LANGE.LUDO
5 年前
如果你遇到 Kerberos 错误,例如
« 注意:未知:Kerberos 错误:凭据缓存文件 '/tmp/krb5cc_0123' 未找到(尝试运行 kinit)»。

尝试添加为 $param
<?php array('DISABLE_AUTHENTICATOR' => 'GSSAPI') ?>

例如
<?php
$imap_stream
= imap_open('{mail.domain.tld:993/imap/ssl}' , 'username' , 'password', null, 1, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));
?>
Lisboa
9 年前
错误:未知:邮箱为空(errflg=1)在 Unknown 上的第 0 行
出现于

1) 使用 imap_open 连接
2) 然后使用 imap_search ALL 检索邮件

但没有可用消息。为了避免此错误,请先使用 imap_status 检查邮箱中的消息数量。只有在有可用消息的情况下,才能使用 imap_search。
Martin Eckardt
13 年前
从 5.3.2 版本开始,可以使用第 6 个参数来禁用 GSSAPI 或 NTLM 身份验证。

示例
<?php
$mbox
= imap_open("{w2010ExchangeServer:993/imap/ssl}", $user, $password, NULL, 1, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));
?>

这解决了我的 Exchange 2010 问题。作为参考,请查看 https://bugs.php.net/bug.php?id=33500
匿名
6 年前
用于测试连接大多数可能选项的函数

function imapConfig($options, $i=0, $till = array()) {
if(sizeof($options)==$i)
return $till;

if(sizeof($till)==0)
$till[] = '';

$opt = $options[$i];
$new = array();
foreach($till as $t) {
foreach($opt as $o) {
if(strlen($o)==0)
$new[] = $t;
else
$new[] = $t.'/'.$o;
}
}
return imapConfig($options, $i+1, $new);
}

function imap_test($server, $port, $dir, $username, $passw) {
$options = array();
//$options[] = array('debug');
$options[] = array('imap', 'imap2', 'imap2bis', 'imap4', 'imap4rev1', 'pop3'); //nntp
$options[] = array('', 'norsh');
$options[] = array('', 'ssl');
$options[] = array('', 'validate-cert', 'novalidate-cert');
$options[] = array('', 'tls', 'notls');

$configOptions = imapConfig($options);
foreach($configOptions as $c) {
$mbox = @imap_open("{".$server.":".$port.$c."}".$dir, $username, $passw);
echo "<b>{".$server.":".$port.$c."}".$dir."</b> ... ";
if (false !== $mbox) {
echo '<span style="color: green"> 成功</span>';
}
else {
echo '<span style="color: red"> 失败</span>';
}
echo '<br>';
}
}

imap_test('mail.server.de', 143, 'INBOX', 'username', 'pwd');
liamr at umich dot edu
20 年前
要使用 kerberos V / GSSAPI 进行身份验证,您可能需要在连接字符串中添加 "user="。例如

$mbox = imap_open( "\{imap.example.com:143/imap/notls/user=" . $user . "}INBOX", $user, $passwd );

我们的 IMAP 服务器不允许除 kerberos 凭据中指定的用户以外的用户使用这些凭据连接,除非您在连接字符串中指定了额外的 "user="。将其作为参数传递给 imap_open() 似乎还不够。
shaikh_zaid at yahoo dot com
18 年前
如果您的服务器使用传输层安全性 (TLS) 操作,imap_open 不会打开流。imap_open 如果存在 SSL,则会使用 SSL 连接。因此,尝试以以下方式打开邮箱

$mailbox="{mail.domain.com:143/imap/notls}";
或者
$mailbox="{mail.domain.com:110/pop3/notls}"; 这有效...

一些邮件服务器要求您提供 [email protected],因此您可以始终使用。[email protected]

$conn=imap_open($mailbox, $username, $password);

一些服务器可能要求将用户名设置为 "[email protected]"

:)
rvarkelen AT hortimax.nl
20 年前
为了与 Microsoft Exchange Server 5.5 建立 IMAP 连接,我使用了以下连接字符串

<?php
if(imap_open ("{192.168.1.6:143/imap}Inbox", "DOMAIN/USERNAME/ALIAS", "PASSWORD"))
{
echo
'连接成功!';
}
else
{
echo
'连接失败';
}
?>

通过将 "Inbox" 替换为,例如 "Tasks",就可以查看所有任务。希望这对大家有所帮助!

此致
frederik at roal dot no
22 年前
对于所有您指定邮箱字符串的 imap 函数,务必始终使用 IP(而不是主机名)和端口号。如果您不这样做,imap 函数会非常慢。
使用主机名而不是 IP 会给每个 IMAP 调用增加 3 秒,不使用端口号会给每个 imap 调用增加 10 秒。(提示:使用 gethostbyname())
mightycpa
15 年前
我的脚本一直超时,即使语法完全正确... 最终,我发现端口被我的虚拟主机阻止了,我在共享服务器上运行了它...

我发布这个只是为了提醒您注意这个显而易见的错误,就像我一样。
avizion at relay dot dk
19 年前
对于 FreeBSD 用户...

如果您想要 SSL 支持,则需要安装端口

mail/php5-imap
security/php5-openssl

干杯 :)

- avizion
brojann at netscape dot com
22 年前
您可以执行

<? $foo = imap_errors(); ?>

来清除不需要的警告消息,例如 '邮箱为空'
m dot stoel at cyberkinetic dot nl
19 年前
一个小技巧,即使您阅读了所有正确的解决方案并实施了它们,但仍然遇到相同的错误或根本没有错误,也会让您非常沮丧..
更改代码后.. 重新启动 httpd deamon..

对于 Fedora 或任何其他 Red Hat Linux 操作系统 (/etc/init.d/httpd restart)。

之后,您将能够从 apache 建立 imap/pop3 流..
kaper at nexgc dot com
21 年前
我一直在努力使 imap_open 连接到 imap 服务器。然后我在网上找到了另一篇文章,建议使用它,它有效,所以我将把它发布在这里。我希望这对其他人有所帮助..

"我已经尝试过以下字符串,它有效

对于 pop3: {www.server.com:110/pop3/notls}INBOX

对于 imap: {www.server.com:143/notls}INBOX。
Stefano
1 年前
``这些年来我学到了一件事,
如果有人说:“这是不可能的”,那就证明他们错了。`` ~ Stefano Kocka '99

测试日期:2022-11-20
php 版本:PHP 8.0.10 (cli)
extension=imap
extension=openssl

imap: IMAP c-Client 版本 => 2007f
SSL 支持 => 已启用

https://support.google.com/accounts/answer/185833?hl=en

<?php
$cnx
= '{imap.gmail.com:993/imap/ssl/readonly}';
$mbox = imap_open($cnx, '[email protected]', 'MyAppPassword');
$folders = imap_listmailbox($mbox, $cnx, '*');
print_r($folders);
/*
Array
(
[0] => {imap.gmail.com:993/imap/ssl/readonly}INBOX
[1] => {imap.gmail.com:993/imap/ssl/readonly}LABEL1
[2] => {imap.gmail.com:993/imap/ssl/readonly}LABEL2
[3] => {imap.gmail.com:993/imap/ssl/readonly}Queue
[4] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/All
[5] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/Drafts
[6] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/Sent
[7] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/Spam
[8] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/Starred
[9] => {imap.gmail.com:993/imap/ssl/readonly}[Gmail]/Trash
)
*/
?>
此致
Ap.Muthu
8 年前
一个旧的存档 2006 PHP 脚本,用于将 IMAP POP3 邮件检索到 MySQL 数据库中,以及作为文件,位于
http://web.archive.org/web/20060411020022/http://www.sellchain.com/phPOP3/phPOP3.txt
egoman69 at hotmail
13 年前
"无法打开流 {127.0.0.1:143/imap/notls}INBOX"

通过仅将 127.0.0.1 替换为 localhost 来解决,php 和 IMAP 服务器都在同一台机器上,不通过代理或任何其他东西。奇怪!
askalski at synacor dot com
16 年前
默认情况下,imap_open() 会在放弃之前重试 3 次错误的密码。这是 c-client 库中内置的功能,用于交互式邮件客户端(可以提示最终用户输入新的用户名/密码组合)。

新的可选参数 "$n_retries" 允许 PHP 覆盖默认的重试限制。绝对没有理由将其保留为默认值,或将其设置为除 1 以外的任何值。这对于使用邮件服务器的用户来说尤为重要,因为如果用户登录失败次数过多,这些邮件服务器会将用户锁定。
itstooloud
16 年前
适用于 Gmail 的新 IMAP 功能,适用于个人和 Google Apps。

$mbox = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", "[email protected]", "password")
or die("无法连接: " . imap_last_error());
david at brayworth dot com dot au
13 年前
我设法在不重新编译的情况下对 Exchange 2010 使用此功能来禁用 kerberos

对我来说重要的是,php 按照标准软件包进行安装 (yum install php)

Exchange 2010 会在 php 中触发 kerberos,您需要 kinit 东西(在 google 上搜索 "imap_open kinit exchange 2010",您会找到它)

为了使其正常工作,我不得不
1. 正确设置 krb5.conf 文件
2. 使用有效的用户名/密码执行 kinit [email protected]
3. 将票证文件重命名为反映 apache 的用户 ID(通常为 48)
/tmp/krb5cc_48
4. 修复所有权
chown apache.apache /tmp/krb5cc_48

但 exchange 服务器将使用 kerberos 票证而不是用户名密码 - 除非您使用 ssl

<?php

$imap_user
= "用户名";
$imap_pass = "密码";
$imap_server = "{w2010kExchangeServer:993/novalidate-cert/ssl}";

$mbox = imap_open("{$imap_server}INBOX", $imap_user, $imap_pass);

$sorted_mbox = imap_sort($mbox, SORTDATE, 0);
$totalrows = imap_num_msg($mbox);
print
"$imap_server\n";

$startvalue = 0;
while (
$startvalue < $totalrows) {

$headers = imap_fetchheader($mbox, $sorted_mbox[ $startvalue ] );
$subject = array();
preg_match_all('/^Subject: (.*)/m', $headers, $subject);
print
$subject[1][0] . "\n";

$startvalue++;
}
?>

PHP/Exchange 的一小步,David 的一大步...
Tim
9 年前


我一直无法连接到 Gmail 的 Imap/pop。它一直提示我尝试登录次数过多。

我做的事情
https://www.google.com/settings/security/lesssecureapps
点击“开启”
> 有效!

因此,最后一步可以使用,但请记住,您的帐户将面临一定的安全风险。无论如何,它在开发中很有用...
jeff1326
13 年前
如果您的连接速度太慢,请尝试使用端口或不使用域。

<?php
// 正常连接
$mailbox = imap_open("{SERVER}INBOX", $username, $password);

// 更快的连接
$mailbox = imap_open("{SERVER:143}INBOX", $username, $password);

// 非常慢的连接
$mailbox = imap_open ("{SERVER.DOMAIN}INBOX", "DOMAIN/".$username, $password);
?>
bandpay at hotmail dot com
23 年前
我想补充一点关于 imap_open 的内容。
如果您想连接到新闻服务器,而不指定任何新闻组,您可以使用以下代码

<?php
$server
= "{news.servername.com/nntp:119}";
$nntp = imap_open($server,"","",OP_HALFOPEN);
?>

然后 $nntp 将成为连接 ID。

此致
//Babak
phpnet at danepowell dot com
12 年前
如果您正在访问本地邮箱文件,例如 imap_open('/var/mail/www-data', '', ''), 您可能在访问文件方面受到限制。

如果 PHP IMAP 在编译时使用了 restrictBox 选项(我认为现在大多数软件包都是这样),您只能访问相对于 $HOME 的文件。以 '/' 或 '../' 开头的路径将被拒绝。
reg1barclay at REMOVETHIS dot live dot it
5 年前
在 Windows 上,此函数不使用 openssl_get_cert_locations() 中列出的目录中的证书:它使用系统的证书存储。如果您想使用由测试机构签名的证书,则必须将测试机构的根证书添加到 Windows 的证书存储中。
Valerio Pulese
8 年前
如果您遇到 imap4/pop3 身份验证步骤缓慢的情况
例如,仅响应就需要 5-10 秒,这可能是因为您连接到一个宣传 GSSAPI 身份验证机制的 imap 服务器。
Martin Eckardt 的注释可以帮助加快速度。
<?php
$mbox
= imap_open("{带有 GSSAPI 的 imap 服务器 :993/imap/ssl}", $user, $password, NULL, 1, array('DISABLE_AUTHENTICATOR' => 'GSSAPI'));
?>

如果您没有使用 GSSAPI,请禁用它。
如果您的 imap/pop 服务器是 Dovecot
/etc/dovecot/conf.d/10-auth.conf
...
auth_mechanisms = plain login gssapi
-> auth_mechanisms = plain login
Brian Law
10 年前
imap_open()
验证 SSL 证书不支持主题备用名称 (SAN) 证书。它只验证主题/通用名称。
oz49erfan
14 年前
确保您的 PHP 通过 phpinfo() 函数启用了 imap

'--with-imap-dir=/opt/lampp' '--with-imap-ssl' '--with-imap=/opt/lampp'

以及

IMAP c-Client 版本 2007e
SSL 支持 是

我注意到我的 apache 脚本可以正常工作,但我的 cli 脚本无法工作。原来我的 php cli 可执行文件没有设置 imap,所以我不得不使用另一个 php cli 可执行文件。
marshall /AT\ pacdemon.org
20 年前
感谢您所有的评论。用户评论帮助我无数次。

我想以我自己的方式回馈一下,提供这个小技巧。要测试您的 pop 或 imap 服务,您可以使用 telnet(几乎所有操作系统都应该自带命令行 telnet 客户端)。

这是 pop3 示例(以 + 开头的行是服务器的响应)

telnet your.pop.host.com 110
+OK POP3 your.pop.host.com v2001.78 server ready
user your_username
+OK User name accepted, password please
pass your_password
+OK Mailbox open, 23 messages

请注意,您的 pop 服务器可能不在 110 端口上,但那是默认/标准端口。

这是 imap 示例(以 OK 开头的行是服务器响应)

telnet your.imap.host.com 143
* OK [CAPABILITY IMAP4REV1...]
1 LOGIN "your_username" "your_password"
1 OK [CAPABILITY...] ... User your_username authenticated

这对一些人来说可能是旧闻,但我希望它对很多人都有帮助。
chris at ocproducts dot com
4 年前
imap_open 支持 SSL/TLS 和 start-TLS,以及完全未加密的会话。

此处的文档略微混淆了某些内容。

它指的是 SSL (/ssl),实际上指的是立即 SSL/TLS。初始连接将立即是 SSL/TLS,而不是稍后升级。(我不知道 c-client 将要协商/使用的 SSL/TLS 版本的具体细节。)

'/tls' 和 '/notls' 选项仅与 start-TLS 相关,即升级的连接。

请注意,存在 '/notls' 选项,但不存在 '/nossl' 选项。这是因为默认情况下,c-client 会在将 start-TLS 作为 IMAP 服务器的广告选项时升级到 TLS (start-TLS)。也就是说,它将根据自动检测来执行此操作。'/notls' 选项会禁用该自动检测,这在某些情况下是必要的。例如,我刚帮助过一个人,他的 IMAP 服务器在 143 端口上向连接宣传 start-TLS,但实际上它只在 993 端口上有效。常规 SSL/TLS 不会执行任何自动检测,因为连接模式必须提前明确地进行。
To Top