Я отправляю почту на «[email protected]» (несуществующий адрес электронной почты), используя мой код ниже. Поскольку этот адрес электронной почты не существует, письмо должно быть возвращено. Я хочу получить сообщение об ошибке, но мой код не печатает это сообщение об ошибке. В чем проблема, и как мне получить сообщение об ошибке?Извлечь сообщение об ошибке при отправке письма на несуществующий адрес
import smtplib
import email
import imaplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def processNewTripData(request):
# process trip data
templateName = "sendmail.html"
mapDictionary = {'fromMail': "[email protected]", 'password': "xxxx", 'toMail': "[email protected]","subject": "New Trip ", 'username': 'Ram','trip_start_date' : '2014-02-10','trip_start_place' : 'Visaka', 'trip_start_time' : '11:00 AM', "templateName" : templateName }
return sendMail(request, mapDictionary)
def sendMail(request, mapDictionary):
try:
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(mapDictionary["fromMail"],mapDictionary["password"])
context = Context(mapDictionary)
html_content = render_to_string(mapDictionary["templateName"], context)
#text_content = "This is Confirmation mail"
msg = MIMEText(html_content,'html')
msg['Subject'] = mapDictionary["subject"]
server.sendmail(mapDictionary["fromMail"], mapDictionary['toMail'],msg.as_string())
if (msg.is_multipart() and len(msg.get_payload()) > 1 and msg.get_payload(1).get_content_type() == 'message/delivery-status'):
# email is DSN
print(msg.get_payload(0).get_payload()) # human-readable section
for dsn in msg.get_payload(1).get_payload():
print('action: %s' % dsn['action']) # e.g., "failed", "delivered"
to_json = {'result' : "True"}
except Exception as e:
print str(e)
to_json = {'result' : "False"}
Единственный способ справиться с этим с приближением к точности - это установить заголовок Reply-To, чтобы любые сообщения об отказе могли обрабатываться отдельной программой. Внедряя логику для чтения сообщений и обработки сообщений об ошибках в различных форматах с разных SMTP-серверов, я знаю, что не все серверы будут беспокоиться о том, чтобы обработать заголовок Reply-To при поднятии сообщений об ошибках, а некоторые настроены не на повышение сообщений об отказе вообще. В моем проекте был потенциал мошенничества с кредитными картами. Таким образом, чем больше отскоков мы могли бы поймать, тем меньше мы были обмануты, и это стоило реализовать. – holdenweb