我收到一条空消息,从 python 和 smtplib 发送
I receive an empty message, sending from python and smtplib
我想从 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()
您在这里阅读了整个文件:
f1 = open('myfile')
print(f1.read())
现在文件指针在末尾;对 f1.read()
的任何进一步调用都将 return 一个空字符串,除非其他进程要向文件添加更多数据。要么将整个消息读入内存,然后打印,要么删除 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
])
我想从 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()
您在这里阅读了整个文件:
f1 = open('myfile')
print(f1.read())
现在文件指针在末尾;对 f1.read()
的任何进一步调用都将 return 一个空字符串,除非其他进程要向文件添加更多数据。要么将整个消息读入内存,然后打印,要么删除 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
])