从分发邮件ID发送邮件的问题[Python]

问题描述 投票:2回答:2

我已经看到了以下问题,但我仍有一些疑问。

Sending an email from a distribution list

首先,我有一个单独的邮件帐户以及用于特定邮件服务器中的组的分发ID。我只能通过指定From字段,通过outlook发送来自分发邮件ID的邮件。它不需要身份验证。

我一直在使用以下代码通过我的个人帐户发送邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os


FROMADDR = "[email protected]"
GROUP_ADDR = ['[email protected]']
PASSWORD = 'foo'


TOADDR   = ['[email protected]']
CCADDR   = ['[email protected]']

# Create message container - the correct MIME type is multipart/alternative.
msg            = MIMEMultipart('alternative')
msg['Subject'] = 'Test'
msg['From']    = FROMADDR
msg['To']      = ', '.join(TOADDR)
msg['Cc']      = ', '.join(CCADDR)

# Create the body of the message (an HTML version).
text = """Hi  this is the body
"""

# Record the MIME types of both parts - text/plain and text/html.
body = MIMEText(text, 'plain')

# Attach parts into message container.
msg.attach(body)

# Send the message via local SMTP server.
s = smtplib.SMTP('server.com', 587)
s.set_debuglevel(1)
s.ehlo()
s.starttls()
s.login(FROMADDR, PASSWORD)
s.sendmail(FROMADDR, TOADDR, msg.as_string())
s.quit()

这完全没问题。由于我能够通过outlook(没有任何密码)从分发邮件ID发送邮件,是否有任何方法可以修改此代码以通过分发ID发送邮件?我试着评论出来了

s.ehlo()
s.starttls()
s.login(FROMADDR, PASSWORD)

部分,但代码给我以下错误:

send: 'mail FROM:<[email protected]> size=393\r\n'
reply: b'530 5.7.1 Client was not authenticated\r\n'
reply: retcode (530); Msg: b'5.7.1 Client was not authenticated'
send: 'rset\r\n'
Traceback (most recent call last):
  File "C:\Send_Mail_new.py", line 39, in <module>
    s.sendmail(FROMADDR, TOADDR, msg.as_string())
  File "C:\Python32\lib\smtplib.py", line 743, in sendmail
    self.rset()
  File "C:\Python32\lib\smtplib.py", line 471, in rset
    return self.docmd("rset")
  File "C:\Python32\lib\smtplib.py", line 395, in docmd
    return self.getreply()
  File "C:\Python32\lib\smtplib.py", line 371, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

有人会在这里帮助我吗?

python smtplib
2个回答
1
投票

reply: retcode (530); Msg: b'5.7.1 Client was not authenticated'

这意味着您需要身份验证。 Outlook可能会对您现有的帐户使用相同的身份验证(因为您只更改了From标头)。


-1
投票

以下代码对我有用:

# create SMTP session
s = smtplib.SMTP(mailservr, 25)

# start TLS for security
s.starttls()

# Authentication
s.login(username, password)

# Converts the Multi part message into a string
text = msg.as_string()

# sending the mail
s.sendmail(fromaddr, toaddr, text)

# terminating the session
s.quit()
© www.soinside.com 2019 - 2024. All rights reserved.