Форум сайта python.su
Помогите, пожалуйста. Отправляю почту с использованием smtplib. Все отлично работает, но вот только не знаю, как указать такие параметры письма как тип, кодировка и тема.
Заранее спасибо!
Офлайн
А это делает не smtplib, а email
Офлайн
А именно так:
mail = MIMEText('Only right now! MAX-GAIN+ by 10$!!!', 'plain', 'latin-1')
mail['From'] = 'Spam-bot'
mail['To'] = 'Vasya Pupkin'
mail['Subject'] = 'Enhance ... '
'''Перед отправлением нужно сформатировать сообщение в строку, используя метод as_string'''
server = smtplib.SMTP(host)
server.sendmail(from_addr, to_addr, mail.as_string())
Отредактировано (Июль 22, 2008 12:28:18)
Офлайн
Большое спасибо вам, уже во всем разобрался.
Офлайн
Хотя я сделал не так как ты написал, ZAN, а через объект Message(). Есть какие-нибудь преимущества предложенного тобой способа ?
Офлайн
Фактически, именно в данном примере преимуществ нет, однако Message - это просто базовый класс для остальных MIME объектов и использовать его напрямую не следует.
sourcesВот с какими проблемами можно столкнуться:
class Message:
“”"Basic message object… ‘'’
mail = Message()
mail['To'] = 'smbd'
documentationНо! Как бы мы ни приаттачивали текст сообщения (в виде списка, либо отдельного аргумента), будет вываливатся ошибка, что payload - не строка (при вызове метода as_string).
attach( payload)
Add the given payload to the current payload, which must be None or a list of Message objects before the call. After the call, the payload will always be a list of Message objects. If you want to set the payload to a scalar object (e.g. a string), use set_payload() instead.
>>> mail.set_payload('my text')
>>> mail.as_string()
'\nmy text'
mail = MIMEMultipart()
msg = MIMEText('my text')
input = open('myzip.zip', 'rb')
attachment = MIMEApplication(input.read(), 'zip')
input.close()
attachment.add_header('Content-Disposition', 'attachment', filename='filename_in_the_letter.zip')
mail.attach(msg)
mail.attach(attachment)
mail.as_string()
Офлайн
Большое спасибо за достаточно полное объяснение проблемы.
Офлайн
Отлично, действительно познавательно, спасибо.
Офлайн
Помогите решить проблему.
Отправляю почт:
s = smtplib.SMTP(server, port)
#s.set_debuglevel(1)
s.starttls()
s.ehlo()
s.login(user_name, user_passwd)
s.sendmail(me, you, msg.as_string())
s.quit()
и выдает вот такую вот ошибку:
File “E:\Scripts\Письмо.py”, line 36, in <module>
s.login(user_name, user_passwd)
File “C:\Program Files\Python25\lib\smtplib.py”, line 554, in login
raise SMTPException(“SMTP AUTH extension not supported by server.”)
SMTPException: SMTP AUTH extension not supported by server.
Офлайн
ваш сервер скорее всего не поддерживает plain аутентификацию
Офлайн