如何使用Python发送经过身份验证的电子邮件?
我有一个python函数来发送电子邮件通知。我已经包括了登录呼叫,以通过我的本地SMTP服务器进行身份验证,但是返回的电子邮件说明“553邮件被拒绝,因为您的IP在PBL中”。进一步阅读后发现,显然我并没有被阻止发送电子邮件,我只是被要求首先进行身份验证 我尝试了base64编码,以避免以纯文本形式发送密码,但没有成功 我还查看了Pysasl库,但我有点不确定如何使用它对SMTP服务器进行身份验证 对于base64编码、pysasl库的正确使用,或者是否有更好的方法来满足正确的身份验证要求,有人有什么指导吗 我的代码如下如何使用Python发送经过身份验证的电子邮件?,python,smtplib,Python,Smtplib,我有一个python函数来发送电子邮件通知。我已经包括了登录呼叫,以通过我的本地SMTP服务器进行身份验证,但是返回的电子邮件说明“553邮件被拒绝,因为您的IP在PBL中”。进一步阅读后发现,显然我并没有被阻止发送电子邮件,我只是被要求首先进行身份验证 我尝试了base64编码,以避免以纯文本形式发送密码,但没有成功 我还查看了Pysasl库,但我有点不确定如何使用它对SMTP服务器进行身份验证 对于base64编码、pysasl库的正确使用,或者是否有更好的方法来满足正确的身份验证要求,有人
def emailNotify(self,userid):
SMTPserver = 'localhost'
sender = '***' # blanked
username = '***' # blanked
receiver = '***' # blanked
pwd = '***' # blanked
text_subtype = 'plain'
msg = 'requested data was posted to dashboard for '+userid
subject = 'confirmation of POST\'d data for '+userid
try:
msg = MIMEText(msg, text_subtype)
msg['Subject'] = subject
msg['From'] = sender
conn = smtplib.SMTP(SMTPserver)
conn.login(username, pwd)
try:
conn.sendmail(sender, receiver, msg.as_string())
finally:
conn.quit()
except:
print('message sending failed')
提前感谢。您有两种方法构建发送邮件的程序:
- 构建防弹解决方案:
- 分析服务器宣布的功能
- 选择一个更好地满足您的要求
- 使用该身份验证方法
- 实际发送邮件
- 使用适用于该服务器的自定义连接方法
- 阅读服务器的文档,了解它声明要支持的内容
- 首先通过一个简单的telnet连接手动测试它,然后在一个交互式Python会话中进行测试(这里空闲就足够了,但是您可以选择您喜欢的Python shell)
- 按照您刚刚测试过的方式仔细编程-但如果服务器功能发生变化,请留下相关错误消息