所以我试图在Iron Python 2.7中发送电子邮件,但没有任何对我有用。所以我结合了一堆不同的代码来尝试并解决我的问题。基本上,我需要在不使用localhost
的情况下发送zip文件,因为我假设客户端计算机不会拥有localhost。
这是我的代码:
# Send an email
def sendEmail():
# Set standard variables
send_to = ["*******@live.com"]
send_from = "********@outlook.com"
subject = "New Game Info"
text = "Some new info for you. This is an automated message."
assert isinstance(send_to, list)
msg = MIMEMultipart(
From=send_from,
To=COMMASPACE.join(send_to),
Date=formatdate(localtime=True),
Subject=subject
)
print "Created MIME..."
msg.attach(MIMEText(text))
print "Attached message..."
with open("TempLog.zip", "rb") as fil:
msg.attach(MIMEApplication(
fil.read(),
Content_Disposition='attachment; filename="%s"' % "TempLog.zip"
))
print "Attached file..."
server = smtplib.SMTP()
server.connect("smtp-mail.outlook.com", 587)
server.starttls()
server.login("*********@outlook.com", "*****")
server.sendmail("********@outlook.com", send_to, msg.as_string())
server.close()
正如您所看到的,我已经将打印语句放在任何地方以找到问题。它可以达到"附加文件......,"但没有进一步。
感谢您对此问题的任何帮助。
答案 0 :(得分:0)
我是yagmail的维护者,这个软件包试图让发送电子邮件变得非常简单。
也许你可以试试这个:
import yagmail
yag = yagmail.SMTP(send_from, password, host = 'smtp-mail.outlook.com')
yag.send(send_to, subject = subject, contents = [text, "TempLog.zip"])
这应该自动将“text”作为正文,当你给它TempLog.zip
的位置时,它会自动检测到它是一个zip文件并附上它。
您可能需要安装它:
pip install yagmail # Python 2
pip3 install yagmail # Python 3
如果某些内容不起作用(或确实如此),请告诉我!我一定会尝试提供更多帮助。
答案 1 :(得分:0)
我建议使用try/catch
块来找出问题究竟是什么。
使用您当前的代码:
try:
server = smtplib.SMTP()
server.connect("smtp-mail.outlook.com", 587)
server.starttls()
server.login("*********@outlook.com", "*****")
server.sendmail("********@outlook.com", send_to, msg.as_string())
server.close()
except SMTPException, err:
print "ERROR: Unable to send mail - %s" %(err)
except Exception, err:
print "Some other error - %s" %(err)
有一个例子,我建议将主机选项放在SMTP初始化中,而不是在connect()
中这样做。您可以根据需要修改此示例以使用starttls()
。
try:
smtp = smtplib.SMTP(host, port)
smtp.sendmail(sender, receivers, message)
print "Successfully sent email to '%s'" %(receivers)
except SMTPException, err:
print "ERROR: Unable to send mail - %s" %(err)
except Exception, err:
print "Some other error - %s" %(err)