我想发送一封电子邮件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()
答案 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
])