SMTP 错误: (552, '5.6.0 提交被拒,发件人与发起者不匹配 <myEmailAddress>')

0 投票
1 回答
1809 浏览
提问于 2025-04-16 05:22

我写了一个Python脚本,用来通过中继服务器发送邮件。我已经测试过,确保了邮件地址等权限都没问题,甚至还用Telnet发送了一封邮件来确认。我的Python脚本在通过我之前的中继服务器发送邮件时也能正常工作。

所以我对为什么会出现以下错误信息感到困惑:

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

我查了一下SMTP错误552,发现是因为邮件大小超出了限制,但我发送的邮件只是几行HTML,大小也就几KB,所以我认为这个问题可以排除。

还有其他可能导致这个问题的想法吗?

编辑:这里是生成错误的Python代码。

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()

1 个回答

0

我不能保证下面这些就是错误的真正原因,但我觉得:

  1. 你收到的消息可能是在说,你的邮件中 From: 这一行的内容和你在 sendmail() 调用中用的发件人邮箱不一致。确保你从文件中读取的邮件内容 a) 有有效的SMTP头部(至少要有 FromToSubject,还有 MIME-VersionContent-Type 也最好有),更具体地说 b) 要有 From: hi@sender.com 这一行。

  2. 创建SMTP对象时需要的是服务器地址,而不是邮箱地址。你应该使用 smtpObj = smtplib.SMTP('mail.server.com') 这样的格式,而不是带有那么多 @ 的东西。否则,可能连接的不是你想要的服务器。

撰写回答