2024-06-16 13:24:27 发布
网友
最好的玩法是什么电子邮件.parserPython包?我有一个外部托管的网络服务器,我也可以发送电子邮件,但这个开发过程是非常乏味的,我觉得应该有一些我可以做的本地。在
有人有什么建议吗?在
我希望能够从电子邮件中提取图像附件,唯一的方法似乎是编写一些代码,将其放到我的web服务器上,给自己发送一些电子邮件,然后检查发生了什么。我希望在当地模仿这个过程。在
你到底想做什么?您当前使用服务器的目的是什么?在
您可以使用email.parser.FeedParser.feed(...)从字符串传入电子邮件。因此,您只需在本地存储一些电子邮件并以这种方式发送它们:
email.parser.FeedParser.feed(...)
import email.parser parser = email.parser.FeedParser() email = '''\ From: Steve <steve@steve.steve> To: Someone <someone@foo.com> Subject: Hey what's up This is a dummy email, no server involved. ''' parser.feed(email) msg = parser.close() print "To:", msg['to'] print "From:", msg['from'] print "Subject:", msg['subject'] print "Body:", repr(msg.get_payload())
输出:
编辑:为了回应您关于提取附件(例如图像)的评论,电子邮件附件跟随MIME standard。您可以复制原始电子邮件(取决于您使用的客户机和服务器),也可以按照标准手工构建自己的电子邮件。在
下面是一个PNG文件的示例:
import email.parser parser = email.parser.FeedParser() email = '''\ From: Steve <steve@steve.steve> To: Someone <someone@foo.com> Subject: Hey what's up MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=_boundary This is a message with multiple parts in MIME format. _boundary Content-Type: text/plain This is the body of the message. No mail server involved. _boundary Content-Type: application/octet-stream Content-Disposition: attachment; filename=test.png; Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAA29JREFUeNosU21oW1UYfs459yPJTZY0SZfFtWnXDzs7BMXBRLY/Ey1M GIp/KlP3cwgOEcThfoj4Z4whMkGnv1ScFoQVRSmr1hWtOh0rY8zRtdOsTZNtTVqTtLlJ7r059/g2 9cLh3nt43+d9Ps5h9vRZgHMwKDCfQ63+1cec+SNcrYxAlocAxZXouK2Q+FEFhr9k2x+9BeXCZwLw fTB7+n1AmGBSauz+9yeF+PuEtuvJEEs9AQTTIGSgUYQq/QmZnXRabtcHKnX4baUHmpAOWH3mHJQS guc+OW+m2Ch7+C1gWy/QagCei/aj6YARAjYKUDfPwM2vTcju488zwZtc6TGw0sS7ZrI6yvYcJzYt 3Lr8DYrZKwSQB1WjnL+GmzPjhGSD7X4FRpof4sXx95QeAfftu8O6M/UayxykhiJkdQE/ffURZqcu kMYVsmAF13/5DpOfnUVzbY5qCmDdB6Gr34/569l9Giq/vaAlQxY5SNP+QbVkI+iX4dcLQD1LHjC4 1RzCvIby/Xmku+MEKiE6Y4KtzRzVhLfwFCzS5y4ROklFHaQNGquRebNtE3Veab9Ntkh7/xIzUhMK QhSz+wkgPwCRIoB7FKdCOMDQs6cT6XQAkDZNAzIDEbjEJB6hf4eAFaExHULde4A1v4iWzH4r6Ukd rtuAFaOOsLEVX8vfSoEYtTdqDuwKg2EEoGs+vDvVVc3TM3Mmu3FgcUlg/NsedA1oiFoFWGGHClub BChNDfWaiYq9E4XbHp57NofBQQmX9y9rdf7QxXDjxoH4Dgm1ox+Rx0+gI7YNVsCAqbM2AcfzoTc8 tKrr8DdOI566Q14ATey+pJXjh8Zi5R/eSAxXOvYOTmH2/FVEe4dgdT6IaLKrzWB9NQ+7uIDq0jz2 7q8g0UXq5kKNcnTkc3b110tIlC682Rv58LTcpVP+PspzcvN6QKr/LaDl03fHkMBjT3OIJQ/L5aOn ittfPsn++PkiFZrYWTr3cU/y62N+hiOXM1DKSviNLRNFgCPZJ5Dp8cCXJfLFZ8aWO19/kXPps8vT E2QwhyMNJCqTr/Zrn74TTBcTiBCDTRokQigav0Ga78bXs95Lp0qxw2cMzZOMDtQWwKbTdJWbyoJo rqYTzpXRuLo2EmaLfWCK1fzMYoU9MrVm7BvzgqmcyeoweKvd958AAwAU0nrZgWbiHgAAAABJRU5E rkJggg== _boundary ''' parser.feed(email) msg = parser.close() print "To:", msg['to'] print "From:", msg['from'] print "Subject:", msg['subject'] print "Body:", repr(msg.get_payload()) print "" for payload in msg.get_payload(): filename = payload.get_filename() if filename: print "Got an attachment: %r" % filename, print "that is %r bytes long." % len(payload.get_payload().decode('base64')) else: print "Got a message: %r" % payload.get_payload()
当我将该文件写入磁盘时,它是一个有效的PNG文件:
$ python -i x.py >>> open('x.png', 'wb').write(payload.get_payload().decode('base64')) $ file x.png x.png: PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced
你到底想做什么?您当前使用服务器的目的是什么?在
您可以使用
email.parser.FeedParser.feed(...)
从字符串传入电子邮件。因此,您只需在本地存储一些电子邮件并以这种方式发送它们:输出:
^{pr2}$编辑:为了回应您关于提取附件(例如图像)的评论,电子邮件附件跟随MIME standard。您可以复制原始电子邮件(取决于您使用的客户机和服务器),也可以按照标准手工构建自己的电子邮件。在
下面是一个PNG文件的示例:
当我将该文件写入磁盘时,它是一个有效的PNG文件:
相关问题 更多 >
编程相关推荐