Для реализации одной задумки по кросспостингу мне понадобилось написать скрипт для пересылки содержимого XML файла на набор адресов. При этом нужно встроить все изображения прямо в тело сообщения. Далее приведу простой пример того, как это можно сделать.
Если Вы знаете способ лучше - пишите, буду рад просветиться.
Нужно заметить, кстати, что скрипт будет работать с почтой google только если разрешить непроверенные приложения (https://www.google.com/settings/security/lesssecureapps).
Если Вы знаете способ лучше - пишите, буду рад просветиться.
Нужно заметить, кстати, что скрипт будет работать с почтой google только если разрешить непроверенные приложения (https://www.google.com/settings/security/lesssecureapps).
Этот пост, кстати, изначально отправлен с помощью скрипта. Пришлось подправить подсветку синтаксиса, но в планах прикрутить Pygments.
#----------------------------------------- # Загрузим все необходимые модули import os # Import smtplib for the sending function import smtplib # Import the email modules from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart #----------------------------------------- # С какого адреса на какой будем посылать # Также необходимо вписать свой пароль me = 'from@gmail.com' you = 'to@gmail.com' gmail_user = me gmail_pwd = '*******' # ВНИМАНИЕ, чтобы скрипт работал, нужно # разрешить непроверенные приложения # https://www.google.com/settings/security/lesssecureapps #----------------------------------------- # Создадим сообщение msg = MIMEMultipart() msg['Subject'] = 'The topic' msg['From'] = me msg['To'] = you ImgFileName = "img.png" # добавлем к сообщению текст со ссылкой на вложенное изображение msgText = MIMEText('<b>Message text!</b><br><img src="cid:%s"><br>' % (ImgFileName), 'html') msg.attach(msgText) # считываем данные изображения img_data = open(ImgFileName, 'rb').read() # добавлем изображение image = MIMEImage(img_data, name=os.path.basename(ImgFileName)) image.add_header('Content-ID', '<{}>'.format(ImgFileName)) msg.attach(image) #----------------------------------------- # Отправим наше письмо s = smtplib.SMTP_SSL('smtp.gmail.com',465) s.ehlo() s.login(gmail_user, gmail_pwd) s.sendmail(me, [you], msg.as_string()) s.close()
Метки: python, блог
Единственное, смущает, что пароль подаётся плэйнтекстом прям в скрипте. Как вариант, можно, хотя бы, брать из файла, к которому выставлены права 600.
ОтветитьУдалитьSMTP_SSL как бы намекает что он при пересылке шифруется, не? А хранение его в скрипте - ну е-мое, и часто вы даете паблик доступ на свои исходники?
Удалить