Не могу получить значение по ключу

Павел Вовк

Новичок
Пользователь
Апр 8, 2020
5
1
3
Windows 10, python 3.74

Привет всем. Пробую создать екзешник, который будет отправлять почту на email адреса.

сам код:
Python:
import smtplib

server = smtplib.SMTP_SSL(mail_smpt[mail_name])
server.login(your_login, your_password)
server.sendmail(your_mail, their_mail, send_mail)



send_mail = '''From: your_mail
To: their_mail
Subject: Учебное задание
Content-Type: text/plain; charset="UTF-8";'''.encode("UTF-8") + text

your_mail = input('Введите свою почту: ')
your_login = input('Введите имя аккаунта: ')
your_password = input('Введите пароль: ')
their_mail = input('Введите почту получателя: ')
mail_name = input('Введите название почтового сервиса: ')

text = input('Введите текст письма: ')

mail_smpt = {'yandex.ru': 'smtp.yandex.ru:465', 'mail.ru': 'smtp.mail.ru:465'}

server.quit()

Переменная server не понимает, что такое mail_smpt. Моя идея заключалась в том, чтобы название почтового сервиса пользователь прописывал сам, и в переменную server записывалось бы значение по ключу из переменной mail_smpt.

Подскажите, как можно этого добиться?
 
Последнее редактирование модератором:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
У вас вызовы функции идут до получения значений. Нужно переместить строки вызовами вниз:
Python:
import smtplib


send_mail = '''From: your_mail
To: their_mail
Subject: Учебное задание
Content-Type: text/plain; charset="UTF-8";'''.encode("UTF-8") + text

your_mail = input('Введите свою почту: ')
your_login = input('Введите имя аккаунта: ')
your_password = input('Введите пароль: ')
their_mail = input('Введите почту получателя: ')
mail_name = input('Введите название почтового сервиса: ')

text = input('Введите текст письма: ')

mail_smpt = {'yandex.ru': 'smtp.yandex.ru:465', 'mail.ru': 'smtp.mail.ru:465'}

server = smtplib.SMTP_SSL(mail_smpt[mail_name])
server.login(your_login, your_password)
server.sendmail(your_mail, their_mail, send_mail)

server.quit()
 

Павел Вовк

Новичок
Пользователь
Апр 8, 2020
5
1
3
У вас вызовы функции идут до получения значений. Нужно переместить строки вызовами вниз:
Python:
import smtplib


send_mail = '''From: your_mail
To: their_mail
Subject: Учебное задание
Content-Type: text/plain; charset="UTF-8";'''.encode("UTF-8") + text

your_mail = input('Введите свою почту: ')
your_login = input('Введите имя аккаунта: ')
your_password = input('Введите пароль: ')
their_mail = input('Введите почту получателя: ')
mail_name = input('Введите название почтового сервиса: ')

text = input('Введите текст письма: ')

mail_smpt = {'yandex.ru': 'smtp.yandex.ru:465', 'mail.ru': 'smtp.mail.ru:465'}

server = smtplib.SMTP_SSL(mail_smpt[mail_name])
server.login(your_login, your_password)
server.sendmail(your_mail, their_mail, send_mail)

server.quit()
Спасибо, не заметил, видимо нужен перерыв) Все заработало, письмо отсылается, но без текста. почему-то текст не отсылается.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Спасибо, не заметил, видимо нужен перерыв) Все заработало, письмо отсылается, но без текста. почему-то текст не отсылается.
Вот эту строку:
Python:
Content-Type: text/plain; charset="UTF-8";'''.encode("UTF-8") + text
нужно написать ниже вот этой:
Python:
text = input('Введите текст письма: ')
 
  • Мне нравится
Реакции: Павел Вовк

Павел Вовк

Новичок
Пользователь
Апр 8, 2020
5
1
3
Вот эту строку:
Python:
Content-Type: text/plain; charset="UTF-8";'''.encode("UTF-8") + text
нужно написать ниже вот этой:
Python:
text = input('Введите текст письма: ')
Да вот все равно пустое письмо приходит. Только тема указана и все. не понимаю
 

Форум IT Специалистов