Инструменты пользователя

Инструменты сайта


python_script

Отправка почты

Самый простой скрипт отправки письма

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
 
toaddr = 'to@email.adress'
me = 'From: my@email.adress'
you = 'To: ' + toaddr
 
server = 'mail.smtp.server'  # Сервер
port = 25  # Порты
user_name = 'login'  # Отправитель
user_passwd = 'password'  # Пароль отправителя
 
# Формируем заголовок письма
msg = MIMEMultipart('mixed')
msg['Subject'] = 'Заголовок письма'
msg['From'] = me
msg['To'] = toaddr
 
# Формируем письмо
part = MIMEText('Содержимое письма', 'Plain email')
msg.attach(part)
 
# Подключение
s = smtplib.SMTP(server, port)
s.ehlo()
s.starttls()
s.ehlo()
# Авторизация
s.login(user_name, user_passwd)
# Отправка письма
s.sendmail(me, toaddr, msg.as_string())
s.quit()

То же самое письмо + вложение

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
 
toaddr = 'to@email.adress'
me = 'From: my@email.adress'
you = 'To: ' + toaddr
 
server = 'mail.smtp.server'  # Сервер
port = 25  # Порты
user_name = 'login'  # Отправитель
user_passwd = 'password'  # Пароль отправителя
 
# Формируем заголовок письма
msg = MIMEMultipart('mixed')
msg['Subject'] = 'With file'
msg['From'] = me
msg['To'] = toaddr
 
body = 'Hi there, sending this email from Python!'
msg.attach(MIMEText(body,'plain'))
 
filename = 'C:\path\file_name.etc'
attachment = open(filename,'rb')
 
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= some.name")
msg.attach(part)
# Подключение
s = smtplib.SMTP(server, port)
s.ehlo()
s.starttls()
s.ehlo()
# Авторизация
s.login(user_name, user_passwd)
# Отправка письма
s.sendmail(me, toaddr, msg.as_string())
s.quit()

Отправка почты с вложением на список адресов c html шаблоном

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
 
class AWSSender:
    s = smtplib.SMTP()
    s.connect('mail.server.name', 25)
    #s.starttls()
    s.login('login', 'P@$$w0rd')
 
    def quit(self):
        s.quit()
 
    def send(self, email, me):
        msg = MIMEMultipart('alternative')
        msg['Subject'] = "Hello World!"
        msg['From'] = me
        msg['To'] = email
 
        # Create the body of the message (a plain-text and an HTML version).
        text = "Email send using a template!"
        html = open('template.html', 'r').read()
 
        html = html.replace('{{ content }}', text)
 
        # Record the MIME types of both parts - text/plain and text/html.
        part1 = MIMEText(text, 'plain')
        part2 = MIMEText(html, 'html')
 
        # Attach parts into message container.
        # According to RFC 2046, the last part of a multipart message, in this case
        # the HTML message, is best and preferred.
        msg.attach(part1)
        msg.attach(part2)
 
        filename = 'C:\PS\two.txt'
        attachment = open(filename, 'rb')
 
        part = MIMEBase('application', 'octet-stream')
        part.set_payload((attachment).read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', "attachment; filename=log.txt")
        msg.attach(part)
 
        self.s.sendmail(me, email, msg.as_string())
        print("Sent email to " + email, end="")
 
emaillist = open('list.txt', 'r').readlines()
 
aws = AWSSender()
 
for email in emaillist:
    aws.send(email, "noreply@mail.name")
python_script.txt · Последнее изменение: 2019/10/01 16:13 (внешнее изменение)