Форум сайта python.su
Решил написать фонарный скрипт для отправки почты.
import smtplib, email.mime.text, email.message, email.header
smtpserver = 'smtp.mail.ru'
while 1:
ask = input('Включить поддержку аутентификации? ')
if ask == 'yes' or ask =='y':
auth = 1
break
elif ask == 'no' or ask == 'n':
auth = 0
break
else:
print ('Необходимо ввести y(yes) или n(no). Попробуйте еще раз.')
continue
if auth ==1:
login = input('Введите логин: ')
passwd = input('Введите пароль: '')
sender = input('Введите адрес отправителя: ')
recipient = input('Введите адрес получателя: ')
subject = input('Введите тему сообщения: ')
msg = input('Введите текст сообщения: ')
mail = email.mime.text.MIMEText(msg.encode('utf-8'), 'plain', 'utf-8')
mail['From'] = sender
mail['To'] = recipient
mail['Subject'] = email.header.Header(subject, 'utf-8')
s = smtplib.SMTP(smtpserver)
s.set_debuglevel(1)
if auth == 1: s.login(login,passwd)
s.sendmail(sender,recipient,mail.as_string())
s.quit()
File "/usr/local/lib/python3.0/email/base64mime.py", line 96, in body_encode
enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
TypeError: b2a_base64() argument 1 must be bytes or buffer, not str
>>> import base64
>>> base64.encodestring('qwerty')
'cXdlcnR5\n
>>> import base64
>>> base64.encodestring('qwerty')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.0/base64.py", line 338, in encodestring
raise TypeError("expected bytes, not %s" % s.__class__.__name__)
TypeError: expected bytes, not str
Отредактировано (Апрель 14, 2009 04:23:03)
Офлайн
Все нормально. В тройке наконец-то решились разделить строки и байты.
Пиши base64.encodestring(b'qwerty')
Офлайн
а еще
passwd = input('Введите пароль: '')
Офлайн