outlook无法连接到exchange服务器怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了outlook无法连接到exchange服务器怎么办相关的知识,希望对你有一定的参考价值。

具体设置如下:
  1.打开 Outlook(即 Outlook Express),点击“工具”,然后选“帐户”。
  2.单击“添加”,在弹出菜单中选择“邮件”,进入 Internet 连接向导。
  3.在“显示名:”字段中输入您的姓名,然后单击“下一步”。
  4.在“电子邮件地址:然后单击“下一步”。
  5.在“接收邮件(pop、IMAP或HTTP)服务器:”字段中输入在“发送邮件服务器 (SMTP):”字段中输入,单击“下一步”。
  6.在“帐户名:”字段中输入您的 163 免费邮用户名(仅输入@ 前面的部分)。在“密码:”字段中输入您的邮箱密码,然后单击“下一步”。
  7.点击“完成”。
  8.在 Internet 帐户中,选择“邮件”选项卡,选中刚才设置的帐号,单击“属性”。
  9.在属性设置窗口中,选择“服务器”选项卡,勾选“我的服务器需要身份验证”,并点击旁边的“设置”按钮。
  10.登录信息选择“使用与接收邮件服务器相同的设置”,确保您在每一字段中输入了正确信息。
  11.点击“确定”。
参考技术A 回答

outlook连接不上服务器,自然是关于邮件服务器的设置有误,关于邮件服务器的具体配置,应具体咨询用户的邮箱提供商。然后按正确方法设置即可,以hotmail为例,操作如下:1、启动outlook,点击文件选项卡,点击添加账号;2、点击电子邮件账户,点击下一步;3、点击手动配置服务器设置或其他服务器类型,点击下一步;4、正确填写红色框内各项内容,点击其他设置;5、点击发送服务器,勾选我的发送服务器要求验证;6、点击高级选项卡,pop3端口修改为995,smtp端口修改为587,勾选此服务器要求加密连接,下方加密连接类型为ssl,点击确定;7、点击下一步完成测试即可。

使用 Python 连接到 Exchange 邮箱 [关闭]

【中文标题】使用 Python 连接到 Exchange 邮箱 [关闭]【英文标题】:Connect to Exchange mailbox with Python [closed] 【发布时间】:2010-09-22 06:13:12 【问题描述】:

我需要在 Python 脚本中连接到 Exchange 邮箱,而不使用本地计算机上的任何配置文件设置(包括使用 Outlook)。如果我使用 win32com 创建 MAPI.Session,我可以使用现有配置文件登录(使用 Logon() 方法),但我只想提供用户名和密码。

这可能吗?如果是这样,有人可以提供示例代码吗?如果它只使用标准库和 pywin32 包,我会更喜欢。遗憾的是,无法为 Exchange 服务器启用 IMAP 访问(然后使用 imaplib)。

如果有必要:所有脚本将做的就是连接到邮箱,并运行收件箱中的邮件,检索内容。如果我能首先获得连接,我可以处理为此编写代码!

澄清有关 Outlook:Outlook 将安装在本地计算机上,但它没有任何帐户设置(即所有适当的库都将可用,但我需要独立于 Outlook 内部的任何设置进行操作)。

【问题讨论】:

【参考方案1】:

我知道这是一个旧线程,但是...

如果您使用的是 Exchange 2007 或更新版本,或者 Office365,请查看 Exchange Web 服务。它是一个非常全面的基于 SOAP 的 Exchange 界面,您几乎可以做任何 Outlook 能够做的事情,包括委托或模拟对其他用户帐户的访问。

https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/ews-reference-for-exchange

更新:我在 PyPI 上发布了一个Python EWS client,它支持自动发现、日历、收件箱、任务、联系人等:

from exchangelib import DELEGATE, Account, Credentials

credentials = Credentials(
    username='MYWINDOMAIN\\myusername',  # Or myusername@example.com for O365
    password='topsecret'
)
a = Account(
    primary_smtp_address='john@example.com', 
    credentials=credentials, 
    autodiscover=True, 
    access_type=DELEGATE
)
# Print first 100 inbox messages in reverse order
for item in a.inbox.all().only('subject').order_by('-datetime_received')[:100]:
    print(item.subject)

【讨论】:

+1 因为这应该是公认的答案。 是否有实现该功能的 python 包装库? 此 EWS 客户端在 Python 2.7 中可用吗? 您的库和您提供的示例代码运行良好。谢谢。 不适合我【参考方案2】:

我知道了,要连接到出站交换,您需要像这样连接:

import smtplib

url = YOUR_EXCHANGE_SERVER
conn = smtplib.SMTP(url,587)
conn.starttls()
user,password = (EXCHANGE_USER,EXCHANGE_PASSWORD)
conn.login(user,password)

现在您可以像正常连接一样发送

message = 'From: FROMADDR\nTo: TOADDRLIST\nSubject: Your subject\n\n'
from, to = fromaddr,toaddrs
txt = 'This is my message'
conn.sendmail(fromaddr,toaddrs,msg.format(txt))

从收件箱中获取邮件有点不同

import imaplib

url = YOUR_EXCHANGE_URL
conn = imaplib.IMAP4_SSL(url,993)
user,password = (EXCHANGE_USER,EXCHANGE_PASSWORD)
conn.login(user,password)
conn.select('INBOX')
results,data = conn.search(None,'ALL')
msg_ids = data[0]
msg_id_list = msg_ids.split()

这会给你一个消息ID列表' s,您可以使用它来获取您的电子邮件

latest_email_id = msg_id_list[-1]
result,data = conn.fetch(latest_email_id,"(RFC822)")
raw_email = data[0][1]

现在 raw_email 是您的电子邮件消息,但它不是很漂亮,如果您想解析它,请这样做

from email.parser import Parser

p = Parser()
msg = p.parsestr(raw_email)

现在可以了

msg.get('From')
msg.get('Subject')

或内容

msg.get_payload()

但如果它是多部分消息,您需要进行更多处理,幸运的是递归解决方案非常适合这种情况

def process_multipart_message(message):
    rtn = ''
    if message.is_multipart():
        for m in message.get_payload():
            rtn += process_multipart_message(m)
    else:
        rtn += message.get_payload()
    return rtn

现在

msg_contant = process_multipart_message(msg)

每次都会给你完整的信息。

【讨论】:

我需要连接到端口 443 并将安全设置为 SSL/TLS(接受所有证书)。我该怎么做?一直在找,目前没有结果。 conn.starttls() 登录前 如果我需要处理使用脚本发送到我的电子邮件的文件 - 我该如何获取他?谢谢!! 如果 Exchange 服务器未配置为允许 IMAP 连接,则此答案不起作用。 使用 Python 3 需要将电子邮件数据从字节解码为字符串。使用以下内容进行补救: raw_email = data[0][1].decode('utf-8')【参考方案3】:

我很确定如果不使用 Outlook 和 MAPI 配置文件,这将是不可能的。如果您可以与您的邮件管理员甜言蜜语,让您在 Exchange 服务器上启用 IMAP,那么您的生活会轻松很多。

【讨论】:

您可以使用 Powershell 使用 Exchange 2007 做您想做的事情,但我对此了解不多。【参考方案4】:

您必须找到一种方法以该特定用户身份运行该进程。

See this.

我认为pywin32.CreateProcessAsUser 是您需要走的路的起点。最后一次编辑。通过win32security.LogonUser方法获取登录用户句柄

【讨论】:

以上是关于outlook无法连接到exchange服务器怎么办的主要内容,如果未能解决你的问题,请参考以下文章

到Microsoft Exchange的连接不可用.Outlook必须处于联机或连接状态才能完成该操作

OUTLOOK 无法验证安全证书问题

使用 Python 连接到 Exchange 邮箱 [关闭]

OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书

outlook无法打开此文件夹集合。到Microsoft Exchange的登录失败, 这怎么解决

Outlook 客户端无法通过 MAPI over HTTP 连接