2010-10-12 20 views
0

J'ai écrit un script Python pour envoyer des emails via un serveur relais. J'ai testé que l'adresse e-mail appropriée, etc sont autorisés, etc en envoyant un e-mail en utilisant Telnet. Mon script Python fonctionne également lorsqu'il est configuré pour envoyer via mon ancien serveur relais.SMTP ERROR: (552, '5.6.0 Soumission refusée L'expéditeur ne correspond pas à l'expéditeur <myEmailAddress>)

donc je suis confus quant à pourquoi je reçois le message d'erreur suivant:

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

J'ai regardé l'erreur SMTP 552 et elle est causée par la taille du message dépassement, mais je ne suis envoyer un e-mail contenant quelques lignes de html qui est seulement quelques kb de taille, donc je suppose que je peux en toute sécurité régler ce problème.

D'autres idées sur ce qui pourrait être le problème?

EDIT: Voici le code Python qui génère l'erreur.

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 = '[email protected]' 
11 receivers = '[email protected]' 
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('[email protected]') 
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() 
+0

Nous avons vraiment besoin de voir du code. – kindall

+0

Nous avons également vraiment besoin de voir la sortie entière du message de rebond. Il n'est pas clair à partir de votre message si le 552 est renvoyé par le serveur de messagerie immédiate (server.com) ou la destination finale (sender.com). –

Répondre

0

Je ne peux pas garantir que l'un de ceux-ci est la cause réelle de l'erreur, mais:

  1. Je pense le message que vous obtenez peut-être dire que l'en-tête From: dans votre message ne correspond pas à l'adresse e-mail que vous utilisez pour l'expéditeur dans l'appel sendmail(). Assurez-vous que le message que vous lisez à partir du fichier a) a des en-têtes SMTP valides (au moins From, To et Subject et MIME-Version et Content-Type ne serait pas mal) et plus spécifiquement b) a une tête From: [email protected].

  2. L'instanciation d'un objet SMTP prend une adresse de serveur, pas une adresse de messagerie. Vous devriez utiliser smtpObj = smtplib.SMTP('mail.server.com') ou autre chose sans beaucoup @ dedans. Sinon, il se peut qu'il ne se connecte pas au serveur que vous pensez être.

+0

Merci beaucoup, c'était que l'en-tête ne correspondait pas à l'adresse e-mail que j'utilisais pour l'expéditeur dans sendmail() !!! – matt2010

+0

Hourra, heureux d'avoir aidé! – kindall