使用 PHP 访问 Office356 共享邮箱
Access Office356 shared mailbox with PHP
我正在编写 PHP 脚本来读取和解析发送到共享邮箱的错误日志。
我正在使用 imap_open() 进行连接。
如果我使用以下凭据连接到我自己的邮箱,它工作正常
server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com
password: mypas$word
但是,如果我想使用以下凭据连接到 sared 邮箱,则会出现错误
server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com\shared-folder@domain.com
password: mypas$word
错误如下:User is authenticated but not connected. (errflg=2)
根据我的研究,这意味着我使用了错误的密码,但由于它在连接到我自己的收件箱时有效,所以它不会错
我 100% 确定我的帐户可以访问共享邮箱,我可以通过我的帐户通过 Office 365 网络界面访问它
更多细节:我的密码包含一个 $ 符号,但这应该无关紧要。我在密码上使用单引号并且转义 $ 符号没有帮助,即使是我的个人邮箱也会导致登录失败。
尝试使用帐户别名
%USERUPN%/%SHAREDALIAS% 例如:-
user@domain.com/sharedbox
其中 "sharedbox" 是共享邮箱的别名而不是完整的电子邮件地址
我看到一些人使用正斜杠 ( / ) 和一些人使用反斜杠 ( \ ) 的不同报告
编辑
您使用的是邮箱别名吗?不要使用 sharedbox@shareddomain.com
交易所配置:
USER EMAIL: user@maindomain.com
PASSWORD: password
SHARED MAILBOX: shared@anotherdomain.com (could also be @domain.com, of course)
SHARED MAILBOX ALIAS: shared-mailbox
注意:请确保始终使用邮箱创建 UNIQUE 别名,因为它会创建用户 [alias]@maindomain.com。在这种情况下共享邮箱@maindomain.com
IMAP 配置设置:
EMAIL ADDRESS: shared@anotherdomain.com (shared mailbox)
IMAP SERVER: outlook.office365.com
SMTP SERVER: smtp.office365.com
USERNAME: user@maindomain.com\shared-mailbox (user\shared mailbox alias)
PASSWORD: password (user's password)
另一个对我们有用的解决方案是使用适当的标志将用户名数据添加到邮箱参数。
例如,使用
的 Office 365 配置
USER EMAIL: user@maindomain.com
PASSWORD: password
SHARED MAILBOX: shared@anotherdomain.com
那么 imap_open 调用将是
imap_open("{outlook.office365.com:993/imap/ssl/authuser=user@maindomain.com/user=shared@anotherdomain.com}", "user@maindomain.com", "password");
请注意包含使用 /authuser 标志的主要用户电子邮件和使用 /user 标志的共享邮箱。
当上一个答案中的邮箱别名方法不成功时,这对我们有用。
我正在编写 PHP 脚本来读取和解析发送到共享邮箱的错误日志。
我正在使用 imap_open() 进行连接。
如果我使用以下凭据连接到我自己的邮箱,它工作正常
server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com
password: mypas$word
但是,如果我想使用以下凭据连接到 sared 邮箱,则会出现错误
server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com\shared-folder@domain.com
password: mypas$word
错误如下:User is authenticated but not connected. (errflg=2)
根据我的研究,这意味着我使用了错误的密码,但由于它在连接到我自己的收件箱时有效,所以它不会错
我 100% 确定我的帐户可以访问共享邮箱,我可以通过我的帐户通过 Office 365 网络界面访问它
更多细节:我的密码包含一个 $ 符号,但这应该无关紧要。我在密码上使用单引号并且转义 $ 符号没有帮助,即使是我的个人邮箱也会导致登录失败。
尝试使用帐户别名
%USERUPN%/%SHAREDALIAS% 例如:-
user@domain.com/sharedbox
其中 "sharedbox" 是共享邮箱的别名而不是完整的电子邮件地址
我看到一些人使用正斜杠 ( / ) 和一些人使用反斜杠 ( \ ) 的不同报告
编辑
您使用的是邮箱别名吗?不要使用 sharedbox@shareddomain.com
交易所配置:
USER EMAIL: user@maindomain.com
PASSWORD: password
SHARED MAILBOX: shared@anotherdomain.com (could also be @domain.com, of course)
SHARED MAILBOX ALIAS: shared-mailbox
注意:请确保始终使用邮箱创建 UNIQUE 别名,因为它会创建用户 [alias]@maindomain.com。在这种情况下共享邮箱@maindomain.com
IMAP 配置设置:
EMAIL ADDRESS: shared@anotherdomain.com (shared mailbox)
IMAP SERVER: outlook.office365.com
SMTP SERVER: smtp.office365.com
USERNAME: user@maindomain.com\shared-mailbox (user\shared mailbox alias)
PASSWORD: password (user's password)
另一个对我们有用的解决方案是使用适当的标志将用户名数据添加到邮箱参数。
例如,使用
的 Office 365 配置USER EMAIL: user@maindomain.com
PASSWORD: password
SHARED MAILBOX: shared@anotherdomain.com
那么 imap_open 调用将是
imap_open("{outlook.office365.com:993/imap/ssl/authuser=user@maindomain.com/user=shared@anotherdomain.com}", "user@maindomain.com", "password");
请注意包含使用 /authuser 标志的主要用户电子邮件和使用 /user 标志的共享邮箱。
当上一个答案中的邮箱别名方法不成功时,这对我们有用。