我收到一条空消息,从python和smtplib发送

时间:2016-02-02 17:15:48

标签: python email send

我想发送一封电子邮件fom python,我读了我的文件(myfile),但我收到一封空邮件......这是我的错误?非常感谢社区!

我的代码:

f1 = open('myfile') 
print(f1.read())

fromaddr = 'chucknorris@gmail.com'
toaddrs  = 'brucelee@icloud.com'
msg = "\r\n".join([
"From:" + fromaddr,
"To:" + toaddrs,
"Subject: Message from SB",
"",
str(f1.read())
])
username = 'chucknorris@gmail.com'
password = 'ChuckImmortal'
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

1 个答案:

答案 0 :(得分:2)

你在这里阅读整个文件:

f1 = open('myfile') 
print(f1.read())

现在文件指针在最后;对f1.read()的任何进一步调用都将返回一个空字符串,除非其他一些进程要向该文件添加更多数据。将整个邮件读入内存,然后打印,或删除print()调用,或使用f1.seek(0)将指针移回开头。

将文件读入变量可以解决这个问题,例如:

with open('myfile') as f1:
    contents = f1.read()
print(contents)

msg = "\r\n".join([
    "From:" + fromaddr,
    "To:" + toaddrs,
    "Subject: Message from SB",
    "",
    contents
])