我知道了,要连接到出站交换,您需要像这样连接:
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 列表
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)
每次都会给你完整的信息。