如何使用tls/ssl使用python发送office365的SMTP电子邮件
问题描述:
我想使用python从我的office365企业帐户发送电子邮件。我是python的新手。此代码以前在使用我的Hotmail帐户时工作过,但现在我需要发送机密信息,我必须使用我的公司电子邮件。如何使用tls/ssl使用python发送office365的SMTP电子邮件
我试了几件事。
- 已验证,我的用户名和密码是正确的。
- 同时使用python2和python3。双方给予同样的错误“535 5.7.3
身份验证不成功” - 我以前使用mailserver.starttls()当我得到上述错误 ,然后经过一番研究,我试图通过一个
证书。 mailserver.starttls(certFile中=“office365.cer”)
我对证书部分不清楚,但是我的步骤包括,网上找,找出如何导出证书。使用chrome浏览器,microsoftonline.com有一个链式证书。我可以导出根目录和根目录下的级别,但不是最后一级。我不知道如何传递这两个文件,所以我只是传递了根证书。在这一点上,我得到错误ssl.SSLError:[SSL] PEM库(_ssl.c:3309)
我被卡在这一点。任何帮助表示赞赏。使用 代码如下
import smtplib
mailserver = smtplib.SMTP('smtp.office365.com',587)
mailserver.ehlo()
mailserver.starttls(certfile='office365.cer')
mailserver.ehlo()
mailserver.login('[email protected]', 'password')
mailserver.sendmail('[email protected]','[email protected]','python email')
mailserver.quit()
答
我发现,它的工作对我来说是库:
https://github.com/Narcolapser/python-o365
https://pypi.python.org/pypi/O365
安装它使用PIP,然后:
from O365 import Message
o365_auth = ('[email protected]','YourPassword')
m = Message(auth=o365_auth)
m.setRecipients('[email protected]')
m.setSubject('I made an email script.')
m.setBody('Talk to the computer, cause the human does not want to hear it any more.')
m.sendMessage()