сообщение на почту python
нужно сделать код,который будет запрашивать имя пользователя и почту,а затем на почту пользователя отсылать сообщение 'привет,имя пользователь' с темой'тест' код:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
name=input('введите ваше имя')
server='smtp.yandex.ru'
sms_from='[email protected]'
password='password'
sms_to=input('введите вашу почту:')
sender='[email protected]'
subject='тест'
text=('здравствуйте,',name)
msg=MIMEMultipart()
msg['From']=sms_from
msg['To']=sms_to
msg['subject']=subject
part_text=MIMEText(text, 'plain')
msg.attach(part_text)
mail=smtplib.SMTP_SSL(server)
mail.login(sms_from, password)
mail.sendmail(sms_from,sms_to,msg.as_string())
mail.quit()
ошибка:
Traceback (most recent call last):
line 19, in <module>
part_text=MIMEText(text, 'plain')
line 34, in __init__
_text.encode('us-ascii')
AttributeError: 'tuple' object has no attribute 'encode'
Ответы (1 шт):
У вас сообщение об ошибке дает четкое понимание что происходит:
part_text=MIMEText(text, 'plain') вот в этой строчке что то не верно.
Вы передаете переменную text, которая имеет тип данных tuple. О чем вам и сообщает второе предложение в сообщении об ошибке. Что при инициализации объекта класса, tuple объект не имеет атрибута encode.
По моим предположениям там должна быть строка. Теперь идем в документацию и находим там вот это:
class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)
Module: email.mime.text
И в описании класса находим _text is the string for the payload. Предположения подтвердились.
Исправляем:
text= 'здравствуйте, ' + name
Теперь должно все заработать