web-dev-qa-db-ja.com

python tls / sslを使用してoffice365にSMTPメールを送信する方法

Pythonを使用してoffice365の企業アカウントからメールを送信しようとしています。私はpythonが初めてです。このコードは、以前はhotmailアカウントを使用していたときに機能していましたが、機密情報を送信する必要があるため、会社のメールを使用する必要があります。

私はいくつかのことを試しました。

  • ユーザー名とパスワードが正しいことを確認しました。
  • Python2とpython3の両方を使用しました。どちらも同じエラーを返します:_535 5.7.3 Authentication unsuccessful_
  • 以前にmailserver.starttls()を使用していたときに上記のエラーが表示されたので、いくつかの調査の後、
    certificate。mailserver.starttls(certfile = 'office365.cer')

証明書の部分については不明ですが、私の手順には、オンラインで証明書をエクスポートする方法を調べることが含まれます。 chrome browser、 microsoftonline.com にはチェーン証明書があります。ルートとルートのすぐ下のレベルをエクスポートできますが、最後のレベルはエクスポートできません。これらの両方のファイルを渡すため、ルート証明書を渡すだけで、この時点でエラーが発生します:ssl.SSLError: [SSL] PEM lib (_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()
_
9
TKerr

まあ、あなたはほとんどそこにいます。次のコードでトリックを行います:

import smtplib

mailserver = smtplib.SMTP('smtp.office365.com',587)
mailserver.ehlo()
mailserver.starttls()
mailserver.login('[email protected]', 'password')
mailserver.sendmail('[email protected]','[email protected]','python email')
mailserver.quit()

詳細については、次のリンクを使用してください。

http://www.aventistech.com/2016/03/07/python-send-email-via-office-365-tls/

https://docs.python.org/3/library/smtplib.html

https://Gist.github.com/jasonjoh/3ec367594c3fa662ee983a617bdc7deb

14
Gal Silberman

私のために働いているライブラリを見つけました:

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()
11
Nacho Parra

コードはわずかに変更されました。上記のコードは機能しません。以下のコードを使用してください。 参照

from O365 import Account

credentials = ('client_id', 'client_secret')

account = Account(credentials)
m = account.new_message()
m.to.add('[email protected]')
m.subject = 'Testing!'
m.body = "George Best quote: I've stopped drinking, but only while I'm asleep."
m.send()
0
Prometheus