无法使用python smtp发送电子邮件

无法使用python smtp发送电子邮件,python,smtp,Python,Smtp,我正在使用python开发一个应用程序,需要通过邮件发送文件。我写了一个发送邮件的程序,但不知道有什么问题。代码发布在下面。请任何人帮我处理这个smtp库。我丢了什么东西吗?还有谁能告诉我什么将是smtp的主机!我正在使用smtp.gmail.com。 还有谁能告诉我如何通过电子邮件发送文件(.csv文件)。谢谢你的帮助 #!/usr/bin/python import smtplib sender = 'someone@yahoo.com' receivers = ['someone@ya

我正在使用python开发一个应用程序,需要通过邮件发送文件。我写了一个发送邮件的程序,但不知道有什么问题。代码发布在下面。请任何人帮我处理这个smtp库。我丢了什么东西吗?还有谁能告诉我什么将是smtp的主机!我正在使用smtp.gmail.com。 还有谁能告诉我如何通过电子邮件发送文件(.csv文件)。谢谢你的帮助

#!/usr/bin/python

import smtplib

sender = 'someone@yahoo.com'
receivers = ['someone@yahoo.com']

message = """From: From Person <someone@yahoo.com>
To: To Person <someone@yahoo.com>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('smtp.gmail.com')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except:
   print "Error: unable to send email"
#/usr/bin/python
导入smtplib
发送者someone@yahoo.com'
接收者=['someone@yahoo.com']
message=“”发件人:发件人
致:致人
主题:SMTP电子邮件测试
这是一封测试电子邮件。
"""
尝试:
smtpObj=smtplib.SMTP('SMTP.gmail.com')
smtpObj.sendmail(发送者、接收者、消息)
打印“已成功发送电子邮件”
除:
打印“错误:无法发送电子邮件”

您没有登录。还有几个原因可能让你无法通过,包括ISP的拦截,gmail如果无法在你身上获得反向DNS,就会反弹你,等等

try:
   smtpObj = smtplib.SMTP('smtp.gmail.com', 587) # or 465
   smtpObj.ehlo()
   smtpObj.starttls()
   smtpObj.login(account, password)
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except:
   print "Error: unable to send email"
我刚刚注意到你要求能够附加一个文件。这改变了一切,因为现在您需要处理编码。尽管我不这么认为,但仍然不难理解

import os
import email
import email.encoders
import email.mime.text
import smtplib

# message/email details
my_email = 'myemail@gmail.com'
my_passw = 'asecret!'
recipients = ['jack@gmail.com', 'jill@gmail.com']
subject = 'This is an email'
message = 'This is the body of the email.'
file_name = 'C:\\temp\\test.txt'

# build the message
msg = email.MIMEMultipart.MIMEMultipart()
msg['From'] = my_email
msg['To'] = ', '.join(recipients)
msg['Date'] = email.Utils.formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(email.MIMEText.MIMEText(message))

# build the attachment
att = email.MIMEBase.MIMEBase('application', 'octet-stream')
att.set_payload(open(file_name, 'rb').read())
email.Encoders.encode_base64(att)
att.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file_name))
msg.attach(att)

# send the message
srv = smtplib.SMTP('smtp.gmail.com', 587)
srv.ehlo()
srv.starttls()
srv.login(my_email, my_passw)
srv.sendmail(my_email, recipients, msg.as_string())

请提供错误详细信息。Tichodroma,Lafada,:socket。错误:[Errno 10060]由于连接方在一段时间后没有正确响应,连接尝试失败,或者由于连接主机未能响应而建立的连接失败感谢帮助!我尝试了这个,但我得到了一个用户名和密码不被接受的错误。我对登录(帐户、密码)没有什么疑惑。那是什么意思。是发件人邮件帐户还是其他帐户。帐户是gmail帐户(myemail@gmail.com)您想从发送电子邮件,密码是该帐户的密码。我刚注意到你的附件请求。很快就会更新我的答案。非常感谢!!请尽快发布您的更新。。。(:哦,所以你知道,如果这是一个免费帐户,并且发送了相当数量的电子邮件,gmail可能会阻止它发送。这是一个真正的痛苦,也没有真正的逻辑,但我已经看到了足够多的时间不使用gmail进行任何测试。通过gmail支付的帐户没有这个问题,而且非常可靠。