Domanda

Ho writted uno script Python per inviare messaggi di posta elettronica tramite un server relay. Ho provato che l'indirizzo di posta elettronica appropriata ecc sono gestite le autorizzazioni ecc inviando una e-mail utilizzando Telnet. My Script Python anche lavoro quando impostato per inviare tramite il mio vecchio server relay.

Pertanto Sono confuso quanto a perché sto ottenendo il seguente messaggio di errore:

 (552, '5.6.0 Submission denied Sender does not match originator <myEmailAddress>)

Ho guardato l'errore SMTP 552 ed è causata dalla dimensione del messaggio superamento, ma io sono solo l'invio di una e-mail contenente un paio di righe di codice HTML che è solo pochi kb di dimensioni così sto assumendo i può escludere in modo sicuro questo problema fuori.

Tutte le altre idee su ciò che potrebbe essere il problema?

EDIT: Ecco il codice Python che genera l'errore.

1 #!/usr/bin/env python
  2 import sys
  3 from sys import argv
  4 import smtplib
  5 import logging
  6 import logging.handlers
  7
  8 LOG_FILENAME = 'sendMail.log'
  9 inputMessage = argv[1]
 10 sender = 'hi@sender.com'
 11 receivers = 'hi@sender.com'
 12 #Reads in the file as a single string
 13 message = open(inputMessage, 'r').read()
 14 log = logging.getLogger()
 15
 16 def initializelogging():
 17     log.setLevel(logging.DEBUG)
 18     fileformatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
 19     filehandler = logging.handlers.RotatingFileHandler(
 20                   LOG_FILENAME,
 21                   maxBytes=10000000,
 22                   backupCount=100)
 23     filehandler.setFormatter(fileformatter)
 24     consoleformatter = logging.Formatter('%(levelname)s: %(message)s')
 25     consolehandler = logging.StreamHandler()
 26     consolehandler.setLevel(logging.INFO)
 27     consolehandler.setFormatter(consoleformatter)
 28     log.addHandler(filehandler)
 29     log.addHandler(consolehandler)
 30 initializelogging()
 31
 32 def sendMail():
 33     try:
 34        
 35         smtpObj = smtplib.SMTP('mailserver@server.com')
 36         smtpObj.sendmail(sender,sender, message)
 37         print "Successfully sent email"
 38         log.info('Successfully sent email')
 39     except Exception, err:
 40         log.error('Unable to send email. See below stack trace........')
 41         log.error('%s\n' % str(err))
 42 sendMail()
È stato utile?

Soluzione

Non può garantire che uno di questi è la vera causa dell'errore, ma:

  1. I che il messaggio che stai ricevendo potrebbe dire che l'intestazione From: nel messaggio non corrisponde l'indirizzo di posta elettronica che si sta utilizzando per il mittente nella chiamata sendmail() . Assicurarsi che il messaggio che si sta leggendo dal file a) ha intestazioni SMTP validi (almeno From, To e Subject e MIME-Version e Content-Type non sarebbe male) e più specificamente b) ha un colpo di testa From: hi@sender.com.

  2. La creazione di istanze per un oggetto SMTP prende un indirizzo del server, non un indirizzo di posta elettronica. Si deve usare smtpObj = smtplib.SMTP('mail.server.com') o qualcosa d'altro, senza tanto @ in esso. In caso contrario, potrebbe non essere connessione al server si pensa che sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top