여러가지 방법들이 있지만 가장 빠르고 쉽게 할 수 있는 방법만 기록에 남긴다. smtplib를 사용하는 예제들이 인터넷에 많이 보이지만 정작 2023년8월 현재에는 잘 동작하지 않는다. 그 간 MS가 보안을 강화한 덕이라고 봐야할 것 같다. 또 여러 글들에서는 Office365세팅을 powershell script로 하는 방법 위주로 안내가 돼 있는데 우분투를 쓰는 나로서는 당장 활용하기 어려웠다.
pip install O365
from O365 import Account, FileSystemTokenBackend
credentials = (
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",
)
scopes = [
"https://graph.microsoft.com/.default",
]
# Use the "credentials" flow
account = Account(
credentials,
auth_flow_type="credentials",
tenant_id="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ" )
if account.authenticate(scopes=scopes):
print("Authenticated!")
mailbox = account.mailbox(resource="cto@mycompany.com")
m = mailbox.new_message()
m.to.add("worker@abc.com")
m.subject = "Testing!"
m.body = "George Best quote: I've stopped drinking, but only while I'm asleep."
m.send()
지금은 단지 메일 송신과 관련된 내용이지만 O365 package를 사용하는 이 과정을 통해 Microsoft office365의 여러 기능들을 이용할 수 있는 인증에 대한 경험을 미리 할 수 있다. 다른 자동화들도 인증 부분을 재활용하거나 약간의 수정만 하면 가능하다.
참조
안녕하세요. 주셨던 내용으로 많은 도움이 되고 있습니다.
저는 초보자인데 Office365 메일 연계를 하고 싶어 뒤지고 있는데
보여주신 코드 중
아래의 내용이 에러가 나서 혹시 더 설정을 해야하는지요 ?
mailbox = account.mailbox(resource="cto@mycompany.com")
m = mailbox.new_message()
m.to.add("worker@abc.com")
m.subject = "Testing!"
m.body = "George Best quote: I've stopped drinking, but only while I'm asleep."
m.send()
에러가 이렇게 나오는디.. 다르게 설정을 해야 할까요 ?
Client Error: 403 Client Error: Forbidden for url: https://graph.microsoft.com/v1.0/users/cto@mycompany.com/sendMail | Error Message: Access is denied. Check credentials and try again. | Error Code: