Этот фрагмент кода очень короткий, но очень эффективный, и он несколько раз помогал мне доставлять автоматические уведомления по электронной почте в корпоративной среде.
Начнем с импорта необходимых библиотек Python.
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os.path
Теперь мы создадим новую функцию, которая будет обрабатывать весь процесс отправки электронной почты. Функция send_email () имеет 3 аргумента: email_recipient в виде строки, email_subject как String и необязательный аргумент attachment_location как String.
def send_email(email_recipient, email_subject, email_message, attachment_location = ''):
Давайте добавим еще несколько строк внутри функции send_email (), чтобы мы могли определить содержание электронной почты.
email_sender = 'your_email_address@your_server.com' msg = MIMEMultipart() msg['From'] = email_sender msg['To'] = email_recipient msg['Subject'] = email_subject msg.attach(MIMEText(email_message, 'plain'))
В следующих строках мы займемся правильной обработкой файловых вложений. Добавьте эти строки кода в функцию.
if attachment_location != '':
filename = os.path.basename(attachment_location)
attachment = open(attachment_location, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)
И самая последняя часть нашей функции Python - это фактическая передача электронного письма в Microsoft Outlook или SMTP-сервер Office365.
try:
server = smtplib.SMTP('smtp.office365.com', 587)
server.ehlo()
server.starttls()
server.login('your_login_name', 'your_login_password')
text = msg.as_string()
server.sendmail(email_sender, email_recipient, text)
print('email sent')
server.quit()
except:
print("SMPT server connection error")
return True
Важно использовать правильные данные для входа, которые используются в приведенной выше функции server.login ().
А чтобы вам было проще, вот весь код Python, который вы можете просто скопировать и вставить. И если вы хотите использовать эту функцию в своем собственном коде. Вот пример вызова функции:
send_email ('[email protected] ',' Happy New Year ',' We love Outlook ',' C : \ Postcard \ NYE.gif ')
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import os.path
def send_email(email_recipient,
email_subject,
email_message,
attachment_location = ''):
email_sender = 'your_email_address@your_server.com'
msg = MIMEMultipart()
msg['From'] = email_sender
msg['To'] = email_recipient
msg['Subject'] = email_subject
msg.attach(MIMEText(email_message, 'plain'))
if attachment_location != '':
filename = os.path.basename(attachment_location)
attachment = open(attachment_location, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',
"attachment; filename= %s" % filename)
msg.attach(part)
try:
server = smtplib.SMTP('smtp.office365.com', 587)
server.ehlo()
server.starttls()
server.login('your_login_name', 'your_login_password')
text = msg.as_string()
server.sendmail(email_sender, email_recipient, text)
print('email sent')
server.quit()
except:
print("SMPT server connection error")
return True
send_email('[email protected]',
'Happy New Year',
'We love Outlook',
'C:\Postcard\NYE.gif')