Как пропустить и перейти к следующему почтовому ящику в smtplib python
написал небольшой скрипт по отправке сообщений, если ящик не доступен и ответ сервера 550 сообщение не было принято, то выдаёт такую вот ошибку: 
Вот сам скрипт:
import smtplib as root
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
ipad = ('C:/Users/user/Desktop/file.txt')
login = input('Введите вашу почту: ')
password = input('Введите пароль от вашей почты: ')
url = 'smtp.mail.ru'
topic = input('Тема: ')
message = ('текст письма')
mailladres = open(ipad, 'r')
lisst = [*mailladres]
rg = len(lisst)
def send_mail():
for b in range(0, rg):
toaddr = lisst[b]
msg = MIMEMultipart()
msg['Subject'] = topic
msg['From'] = login
body = message
msg.attach(MIMEText(body, 'plain'))
server = root.SMTP_SSL(url, 465)
server.login(login, password)
server.sendmail(login, toaddr, msg.as_string())
num = (b + 1)
print(num)
send_mail()
Вот адрес почты: [email protected] из-за которой падает скрипт.
Подскажите как можно реализовать примерно такой сценарий: "если выдается эта ошибка или ответ от сервера 550, то переходим к следующему email по списку."
Ответы (2 шт):
Автор решения: Roman Konoval
→ Ссылка
Заверните вызов в try ... except и игнорируйте исключение если код 550 приблизительно так:
for b in range(0, rg):
toaddr = lisst[b]
msg = MIMEMultipart()
msg['Subject'] = topic
msg['From'] = login
body = message
msg.attach(MIMEText(body, 'plain'))
server = root.SMTP_SSL(url, 465)
server.login(login, password)
try:
server.sendmail(login, toaddr, msg.as_string())
except root.SMTPDataError as e:
print('Error code={} msg={}'.format(e.code, e.msg))
if e.code == 550: # можно сюда добавить и анализ e.msg
print('skipping address={}'.format(toaddr))
continue
else:
raise
num = (b + 1)
print(num)
Автор решения: LOliPoPPOP
→ Ссылка
Для будущих читателей, вот простое решение.
for b in range(0, rg):
toaddr = lisst[b]
msg = MIMEMultipart()
msg['Subject'] = topic
msg['From'] = login
body = message
msg.attach(MIMEText(body, 'plain'))
server = root.SMTP_SSL(url, 465)
server.login(login, password)
try:
server.sendmail(login, toaddr, msg.as_string())
num = (b + 1)
print(num)
except:
b += 1