Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python smtplib发送邮件时出错_Python_Email_Smtp_Python 3.2_Yahoo Mail - Fatal编程技术网

使用python smtplib发送邮件时出错

使用python smtplib发送邮件时出错,python,email,smtp,python-3.2,yahoo-mail,Python,Email,Smtp,Python 3.2,Yahoo Mail,我正在尝试使用python 3.2 SMTPlib.sendmail()函数 在对SMTP库进行一些修改(即 注释掉正在抑制错误的rset()函数(msg) 我设法从服务器检索到以下错误消息: SendMail失败 (554,b‘交易失败:由于可能被滥用,无法发送消息;请访问了解更多信息’) yahoo mail SMTP服务器认为我在发送垃圾邮件,URL确实链接到任何东西 有用。我认为这与头球不足有关,我似乎找不到确切的答案 回答什么构成了兼容的标题&我已经读到了Gmail的类似问题。 这篇文

我正在尝试使用python 3.2 SMTPlib.sendmail()函数 在对SMTP库进行一些修改(即 注释掉正在抑制错误的rset()函数(msg) 我设法从服务器检索到以下错误消息:

SendMail失败 (554,b‘交易失败:由于可能被滥用,无法发送消息;请访问了解更多信息’)

yahoo mail SMTP服务器认为我在发送垃圾邮件,URL确实链接到任何东西 有用。我认为这与头球不足有关,我似乎找不到确切的答案 回答什么构成了兼容的标题&我已经读到了Gmail的类似问题。 这篇文章已被模拟电子邮件取代

任何帮助都将不胜感激

我的完整代码如下:

    self.message =  email.message_from_string('''To: <ksmith@yahoo.co.nz>
    From: <rwilson@yahoo.co.nz>
    Reply-To: <rwilson@yahoo.co.nz>
    Subject: Test send mail \n\n Hello''')
    fromAddress = 'rwilson@yahoo.co.nz'
    toAddress = 'ksmith@yahoo.co.nz'
    try:
        self.smtp = SMTP()
        self.smtp.connect('smtp.mail.yahoo.com')
    except Exception:
        print('Connection Failed')
        print(traceback.format_exc())
    try:
        self.smtp.login('rwilson','tree22')
    except Exception:
        print('Login Failed!')
        print(traceback.format_exc())
    try:
        self.smtp.sendmail(fromAddress,toAddress ,self.message.as_string())
        print("Message sucessfully sent!")
        self.smtp.close()
    except Exception as e:
        print('SendMail Failed')
        print(e)
self.message=email.message从字符串(“”)发送至:
发件人:
答复:
主题:测试发送邮件\n\n你好“”)
fromAddress=rwilson@yahoo.co.nz'
解决问题ksmith@yahoo.co.nz'
尝试:
self.smtp=smtp()
self.smtp.connect('smtp.mail.yahoo.com')
除例外情况外:
打印('连接失败')
打印(traceback.format_exc())
尝试:
self.smtp.login('rwilson','tree22')
除例外情况外:
打印('登录失败!')
打印(traceback.format_exc())
尝试:
self.smtp.sendmail(fromAddress,toAddress,self.message.as_string())
打印(“消息已成功发送!”)
self.smtp.close()
例外情况除外,如e:
打印('发送邮件失败')
打印(e)

在登录前将以下内容添加到您的代码中,然后重试

try:
        self.smtp.ehlo()
        self.smtp.starttls()
        self.smtp.ehlo
except:
        print "No TLS :("

#do login here

以下内容适用于Python 2.7和Python 3.2上的microsoft、google、yahoo帐户:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Send email via smtp_host."""
import smtplib
from email.mime.text import MIMEText
from email.header    import Header

####smtp_host = 'smtp.live.com'        # microsoft
####smtp_host = 'smtp.gmail.com'       # google
smtp_host = 'smtp.mail.yahoo.com'  # yahoo
login, password = ...
recipients_emails = [login]

msg = MIMEText('body…', 'plain', 'utf-8')
msg['Subject'] = Header('subject…', 'utf-8')
msg['From'] = login
msg['To'] = ", ".join(recipients_emails)

s = smtplib.SMTP(smtp_host, 587, timeout=10)
s.set_debuglevel(1)
try:
    s.starttls()
    s.login(login, password)
    s.sendmail(msg['From'], recipients_emails, msg.as_string())
finally:
    s.quit()

我建议使用普通的
telnet
会话调试此问题:打开到SMTP服务器端口25的telnet连接,并尝试通过手动键入SMTP会话来传递邮件。如果这也不起作用,那么您的问题与Python的SMTPlib无关,您应该继续尝试找出SMTP服务器拒绝您的邮件作为垃圾邮件的原因。如果它确实有效,那么代码就有问题。使用诸如
tcpdump
和/或Wireshark之类的数据包嗅探器,将普通SMTP会话与python代码导致的SMTP会话进行比较,找出区别。我已放弃尝试使用yahoo,上面的代码似乎可以使用SMTP.gmail.com。使用msg=MIMEMultipart()创建邮件时出错. 按照您的建议,使用msg=MIMEText('body…','plain','utf-8')定义消息解决了我的问题,并且我能够在消息中发送正文文本。谢谢