Как я могу отправить электронное письмо с вложением с помощью Python и Microsoft Exchange?
Может ли кто-нибудь помочь мне отправить электронное письмо из моей учетной записи обмена и добавить вложения. SMTP не работает, у меня сразу возникают проблемы с тайм-аутом. 0365 не сохраняет копию в мою отправленную папку. Единственный, кого я знаю, это exchangelib
from exchangelib import Account, Credentials, Message, Mailbox, FileAttachment
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
email = 'XXXXXXXX'
password = 'XXXXXXXX'
a = Account(email, credentials=Credentials(email, password), autodiscover=True)
dir_path = ('C:/Users/Istcrmt/Documents/Python/PythonforAnaconda3.5/')
excel_name = 'test.xlsx'
#attach an excel file:
for i in email_list.itertuples():
# if you want a copy in the 'Sent' folder
m = Message(
account=a
,folder=a.sent
,subject=(i.AGENCY_NAME + ' I made an email script.')
,body='All bodies are beautiful'
,to_recipients=[Mailbox(email_address=i.NEW_MAIL)])
#attach files
m.attachments.append(part)
# m.attach(cover_letter)
m.send_and_save()
1 ответ
Так вы отправляете электронные письма с вложением exchangelib
:
from exchangelib import ServiceAccount, Configuration, Account, DELEGATE
from exchangelib import Message, Mailbox, FileAttachment
from config import cfg # load your credentials
def send_email(account, subject, body, recipients, attachments=None):
"""
Send an email.
Parameters
----------
account : Account object
subject : str
body : str
recipients : list of str
Each str is and email adress
attachments : list of tuples or None
(filename, binary contents)
Examples
--------
>>> send_email(account, 'Subject line', 'Hello!', ['info@example.com'])
"""
to_recipients = []
for recipient in recipients:
to_recipients.append(Mailbox(email_address=recipient))
# Create message
m = Message(account=account,
folder=account.sent,
subject=subject,
body=body,
to_recipients=to_recipients)
# attach files
for attachment_name, attachment_content in attachments or []:
file = FileAttachment(name=attachment_name, content=attachment_content)
m.attach(file)
m.send_and_save()
credentials = ServiceAccount(username=cfg['user'],
password=cfg['password'])
config = Configuration(server=cfg['server'], credentials=credentials)
account = Account(primary_smtp_address=cfg['smtp_address'], config=config,
autodiscover=False, access_type=DELEGATE)
# Read attachment
attachments = []
with open('filestorage/numbers-test-document.pdf', 'rb') as f:
content = f.read()
attachments.append(('whatever.pdf', content))
# Send email
send_email(account, 'Test 14:35', 'works', ['themoosemind@gmail.com'],
attachments=attachments)
Связанный: чтение электронных писем и загрузка вложений с сервера Exchange