Форум сайта python.su
Есть следующий скрипт
import os
import re
import smtplib
from email.mime.text import MIMEText
import time
import urllib.request
# Fill the next parameters
# SMTP server
smtp_server = "smtp.inbox.ru"
# SMTP port
smtp_port = 25
# SMTP login
smtp_address = "vatnika@inbox.ru"
# SMTP password
smtp_password = "35692858f"
# Email topic
email_topic = "Topic"
# Mail body
mail_body = "Spam message."
############################
usedEmails = []
num = 0
while True:
u = urllib.request.urlopen("http://otvet.mail.ru/drama/")
page = u.read()
emailPattern = r"[0-9a-zA-Z_\-\.]+@[0-9a-z-A-Z\.]+\.[a-zA-Z]+"
patternRe = re.compile(emailPattern)
page=str(page)
for address in patternRe.findall(page):
if not address in usedEmails:
num = num + 1
msg = MIMEText(mail_body + address, "", "utf-8")
msg['From'] = smtp_address
msg['To'] = address
msg['Subject'] = email_topic
mailServer = smtplib.SMTP(smtp_server, smtp_port)
mailServer.login(smtp_address, smtp_password)
mailServer.sendmail(smtp_address, address, msg.as_string())
mailServer.close()
print(num, address)
usedEmails.append(address)
time.sleep(15)
Traceback (most recent call last):
File "C:\py3eg\spamer.otvet.mail.ru.py", line 52, in <module>
mailServer.sendmail(smtp_address, address, msg.as_string())
File "C:\Python32\lib\smtplib.py", line 742, in sendmail
raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (550, b'Message was not accepted -- invalid mailbox. Local mailbox xfb@Mail.Ru is unavailable: user not found')
Офлайн
Точно так же, как и другие.
Поймать все исключения:
try:
{your code}
except Exception as e:
print e
try:
{your code}
except smtplib.SMTPDataError as e:
print e
Офлайн
Пишу
try:
{your code}
except Exception as e:
print e
Отредактировано (Ноя. 20, 2011 17:00:36)
Офлайн
Если python 3, то
print(e)
Офлайн
В 3 ветке print является функцией, соответсвенно должно быть print(e).
Офлайн
krotУ него третий, в первом сообщении в исключении, путь к третему указан.
Если python 3, то
print(e)
Офлайн
Работает, но теперь программа пытаясь послать письмо на найденный почтовый ящик xfb@Mail.Ru не может это сделать и пытается снова и снова отправить на этот ящик письмо.
Интерпретатор выдаёт:
(550, b'Message was not accepted -- invalid mailbox. Local mailbox xfb@Mail.Ru is unavailable: user not found')
(550, b'Message was not accepted -- invalid mailbox. Local mailbox xfb@Mail.Ru is unavailable: user not found')
(550, b'Message was not accepted -- invalid mailbox. Local mailbox xfb@Mail.Ru is unavailable: user not found')
...
Отредактировано (Ноя. 20, 2011 17:26:58)
Офлайн
try:
mailServer.sendmail(smtp_address, address, msg.as_string())
except smtplib.SMTPDataError as e:
if e[0] == 550: # возможно, по-другому надо доставать, типа e.errno
print('wrong address {0}'.format(address))
continue
Отредактировано (Ноя. 20, 2011 23:22:10)
Офлайн
fanatidХорошо что у вас хотя бы “print e” а не “pass”. Но все ровно толку от этого кода никакого. И рано или поздно такие заглушки приведет к беде. Взять весь код в try-except да еще обрабатывать только Exception это как страусу воткнуть голову в землю.
Поймать все исключения:
Офлайн
py.user.nextЗачем здесь ?try:
mailServer.sendmail(smtp_address, address, msg.as_string())
except smtplib.SMTPDataError as e:
if e[0] == 550: # возможно, по-другому надо доставать, типа e.errno
print('wrong address {0}'.format(address))
continue
Офлайн