使用PHP访问Office356共享邮箱

Sur*_*rya 3 php imap

我正在使用PHP脚本来读取和解析发送到共享邮箱的错误日志。

我正在使用imap_open()进行连接。

如果我使用以下凭据连接到自己的邮箱,则可以正常工作

server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com
password: mypas$word
Run Code Online (Sandbox Code Playgroud)

但是,如果我想使用以下凭据连接到sared邮箱,则会收到错误消息

server: {outlook.office365.com:993/imap/ssl}
username: myname@domain.com\shared-folder@domain.com
password: mypas$word
Run Code Online (Sandbox Code Playgroud)

错误如下: User is authenticated but not connected. (errflg=2)

根据我的研究,这意味着我使用了错误的密码,但是由于该密码在连接到我自己的收件箱时有效,因此不会错

我100%确定我的帐户可以访问共享邮箱,可以通过Office 365网络界面通过我的帐户访问它

更详细一点:我的密码包含$符号,但这没关系。我在密码上使用单引号,并且转义$符号没有帮助,即使我的个人邮箱也导致登录失败。

gre*_*sel 5

尝试使用帐户别名

%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
Run Code Online (Sandbox Code Playgroud)

注意:请确保始终使用邮箱创建唯一别名,因为它创建了用户 [别名]@maindomain.com。在这种情况下 shared-mailbox@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)
Run Code Online (Sandbox Code Playgroud)

  • 我们最终通过将 `array('DISABLE_AUTHENTICATOR' => 'PLAIN')` 添加到 `imap_open` 字符串中来实现这一点。我们还必须创建一个新的共享邮箱,第一个的配置有问题,我们无法让它在那里工作。 (3认同)

小智 5

对我们有用的另一个解决方案是使用适当的标志将用户名数据添加到邮箱参数。

例如,使用Office 365配置

USER EMAIL: user@maindomain.com
PASSWORD: password
SHARED MAILBOX: shared@anotherdomain.com
Run Code Online (Sandbox Code Playgroud)

那么imap_open调用将是

imap_open("{outlook.office365.com:993/imap/ssl/authuser=user@maindomain.com/user=shared@anotherdomain.com}", "user@maindomain.com", "password");
Run Code Online (Sandbox Code Playgroud)

请注意,使用/ authuser标志包含主要用户电子邮件,使用/ user标志包含共享邮箱。

当上一个答案中的邮箱别名方法不成功时,这对我们有用。