Почтовый клиент с двумя почтовыми хостами на Python

Я хотел написать свой почтовый клиент на Python, используя два почтовых хоста Gmail и Mail.Ru. Вот мой код:

import imaplib
import smtplib
import pprint
#import getpass

#Mail host's
imap_gmail = 'imap.gmail.com'
imap_mail = 'imap.mail.ru'
smtp_gmail = 'smtp.gmail.com'
smtp_mail = 'smtp.mail.ru'

login = True

#Autorization to mail
while login:
    user = input('Enter your email: ')
    pass_mail = input('Enter your password: ')

    try:
        #IMAP Host
        imap = imaplib.IMAP4_SSL(imap_gmail or imap_mail)

        # login to server
        imap.login(user, pass_mail)
    except:
        print('Error')
        continue
    #login = False
    break

#Select the act
act = input('What do you do? \n1. Writing the message. \n2. View all messages.')

#Send the message
if act == '1':
    fromaddr = user
    to_email = input('Enter the email: ')
    message = input('Enter the message: ')

    #SMTP Message
    try:
        #SMTP Host
        smtp = smtplib.SMTP(smtp_gmail or smtp_mail)
        smtp.starttls()
        smtp.login(user, pass_mail)
        #Send the message
        smtp.sendmail(fromaddr, to_email, message)
        print('Email sent successfully!!!')
    except smtplib.SMTPException:
        print('Error')

#View all inbox messages
elif act == '2':
    imap = imaplib.IMAP4_SSL(imap_gmail or imap_mail)
    imap.login(user, pass_mail)

    imap.select('Inbox')

    tmp, data = imap.search(None, 'ALL')
    for num in data[0].split():
        tmp, data = imap.fetch(num, '(RFC822)')
        print('Message: {0}\n'.format(num))
        pprint.pprint(data[0][1])
        break
    imap.close()

У меня работает хост Gmail, а второй Mail.Ru не работает, как сделать почтовый клиент с двумя хостами, чтобы второй хост работал?


Ответы (1 шт):

Автор решения: Reeddic Vasechkin

Возможно нужно включить в mail аккаунте доступ сторонних приложений.

→ Ссылка