Найти - Пользователи
Полная версия: Отправка с помощью SMTPLIB
Начало » Python для новичков » Отправка с помощью SMTPLIB
1 2
Fedor_Bober
Вопрос. на почту приходит файл Untitled.bin

А не исходный. Я так понимаю дело в кодировке?
Ниже кусок кода.
 #отправка на email
            fromaddr = "____________@gmail.com"
            toaddr = "______@mail.ru"
            mypass = "*_*_*_*_"
            filename = os.path.split(j)[0]+"/"+"Общий файл.pdf"
            with open(filename, "rb") as attachment:
                part = MIMEBase("application", "octet-stream")
                part.set_payload(attachment.read())
            encoders.encode_base64(part)
            part.add_header(
                "Content-Disposition",
                f"attachment; filename= {filename}",)
            msg = MIMEMultipart()
            msg['From'] = fromaddr
            msg['To'] = toaddr
            msg['Subject'] = "Subject"
            msg.attach(part)
 
            body = "Это пробное сообщение\n Test.Text.\n Let's get away from here!"
            msg.attach(MIMEText(body, 'plain'))
 
            server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
            server.login(fromaddr, mypass)
            text = msg.as_string()
            server.sendmail(fromaddr, toaddr, text)
            server.quit()
                
            #отправка на email
py.user.next
Fedor_Bober
Как приложить к письму аттач файл (вложение)?
Есть среди примеров отправка вложений
https://docs.python.org/3/library/email.examples.html

Вот здесь метод для добавления атача
https://docs.python.org/3/library/email.message.html#email.message.EmailMessage.add_attachment
EugeneK
Вот мой пример. Работает и без функции. Если вам атач не нужен, то можете его удалить. Может конечно что-то криво написано. НО как я понял так и написал
 def send_email(send_attach):
    msg = MIMEMultipart()
    msg.attach(MIMEText(email_body, 'plain', 'utf-8'))
    msg['Subject'] = Header(email_subject, 'utf-8')
    msg['From'] = send_address
    msg['To'] = ', '.join(recipients_emails)
    # attache added
    location = path_for_log + send_attach
    part = MIMEBase('application', "octet-stream")
    part.set_payload(open(location, "rb").read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename={}'.format(send_attach))
    msg.attach(part)
    #
    s = smtplib.SMTP(smtp_host, 587, timeout=10)
    s.set_debuglevel(0)
    s.starttls()
    s.login(login, password)
    #
    s.sendmail(msg['From'], recipients_emails, msg.as_string())
    s.quit()
Fedor_Bober
EugeneK
Вот мой пример. Работает и без функции. Если вам атач не нужен, то можете его удалить. Может конечно что-то криво написано. НО как я понял так и написал
Спасибо за ответ. Но ничего не понял)))

Читаю мануалы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB