【问题标题】:I receive an empty message, sending from python and smtplib我收到一条空消息,从 python 和 smtplib 发送
【发布时间】:2016-05-11 15:04:16
【问题描述】:

我想发送一封来自 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()

【问题讨论】:

    标签: python email send


    【解决方案1】:

    您在这里阅读了整个文件:

    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
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多