Python电子邮件解析非多部分
我有一个脚本可以解析原始电子邮件。它适用于多部分电子邮件,但如何解析非多部分电子邮件Python电子邮件解析非多部分,python,email,parsing,Python,Email,Parsing,我有一个脚本可以解析原始电子邮件。它适用于多部分电子邮件,但如何解析非多部分电子邮件 mail = email.message_from_string(raw_message) if mail.is_multipart(): data = extract(mail) else: payload = mail.get_payload(decode=True) 原始电子邮件: Return-Path: <> X-Original-To: bounces@mydomain
mail = email.message_from_string(raw_message)
if mail.is_multipart():
data = extract(mail)
else:
payload = mail.get_payload(decode=True)
原始电子邮件:
Return-Path: <>
X-Original-To: bounces@mydomain.com
Delivered-To: bounces@mydomain.com
Received: from inmumg01.tcs.com (inmumg01.tcs.com [219.64.33.12])
by smtp.mydomain.com (Postfix) with ESMTP id 603693FE11
for <bounces@mydomain.com>; Tue, 15 Mar 2016 04:39:36 -0400 (EDT)
Received: from localhost by inmumg01.tcs.com;
15 Mar 2016 14:09:38 +0530
Message-Id: <5aaa80$2543de@inmumg01.tcs.com>
Date: 15 Mar 2016 14:09:38 +0530
To: bounces@mydomain.com
From: "Mail Delivery System" <mail.notification@tcs.com>
Subject: Undeliverable Message
The following message to <vipul4.j@tcs.com> was undeliverable.
The reason for the problem:
5.1.0 - Unknown address error 550-'vipul4.j@tcs.com... No such user'
The IP address of the MTA to which the message could not be sent:
172.17.9.35
---------- A copy of the message begins below this line ----------
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE
X-IPAS-Result: A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE
X-IronPort-AV: E=Sophos;i="5.24,338,1454956200";
d="scan'208,217";a="72486315"
X-Amp-Result: Clean
X-Amp-File-Uploaded: False
Received: from smtp.mydomain.com ([139.59.240.124])
by inmumg01.tcs.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 15 Mar 2016 14:09:37 +0530
Received: from 128.199.202.14 (unknown [128.199.202.14])
(Authenticated sender: mailsender)
by smtp.mydomain.com (Postfix) with ESMTPA id 0D41F3FE11
for <vipul4.j@tcs.com>; Tue, 15 Mar 2016 04:39:33 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kitemailer.com;
s=kitemail; t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=Date:From:To:Subject:List-Unsubscribe;
b=Xxaf++WE0B7HL+FN28O76df7gYNEIKzk8eE9VpxrnMBCpGWPKWBMMfVDfCyie3NBJ
GJiMxn/Yhn+ey6Mr5R5AK5JO5n72yWlytLm0RepMEydaeHHVQPx7bE+LMDMlORSFin
bWdnz58lNMuZ3w9qtqjCXt22Sk5yXfCO71tRgfus=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mydomain.com;
s=kitemail; t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=Date:From:To:Subject:List-Unsubscribe;
b=FiGdkSE9LCjYkfYyWq65GbZoMZVCQs5OXXJA35CyGQtjPWbvwIKvx7Z6Ff39EBRLf
Vu+6PUrvwyZLFh/1CW0NGOHDgUDjWWQ2jHfnNpJ9QEbHgOwomuMty10HDeZnIr0zM7
8mFCgeCbiiyusQkhmXh5aYqqD+Q/1wFcrpLpkBZc=
Date: Tue, 15 Mar 2016 04:39:31 -0400 (EDT)
From: Kitemailer Newsletter <info@kitemailer.com>
To: vipul4.j@tcs.com
Message-ID: <15106466-1b13-4d64-b220-15f05f4815b7-1458031171312@smtp.mydomain.com>
Subject: KiteMailer | New Features this Week
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_44_1398250960.1458031171306"
List-Unsubscribe: <http://example.com/unsubscribe/dmlwdWw0LmpAdGNzLmNvbSM5Ng==>
Feedback-ID: 19:96:1520615:MyDomain
返回路径:
X-原件至:bounces@mydomain.com
交付给:bounces@mydomain.com
收到:来自inmumg01.tcs.com(inmumg01.tcs.com[219.64.33.12])
通过smtp.mydomain.com(Postfix),ESMTP id 603693FE11
对于2016年3月15日星期二04:39:36-0400(美国东部时间)
接收:inmumg01.tcs.com从本地主机接收;
2016年3月15日14:09:38+0530
消息Id:
日期:2016年3月15日14:09:38+0530
致:bounces@mydomain.com
发件人:“邮件递送系统”
主题:无法传递的消息
无法向发送以下消息。
出现问题的原因是:
5.1.0-未知地址错误550-'vipul4。j@tcs.com... 没有这样的用户标签
无法将邮件发送到的MTA的IP地址:
172.17.9.35
----------该消息的副本从此行下方开始----------
X-IronPort-Anti-Spam-Filtered:正确
X-IronPort-Anti-Spam-Result:A0CGBgCEyedW/3ZWO4TDHGEBAG4BKlMum2NxOjekbdyFMBxUfaq2HgWi4FaebaqBaqfkJ4RliaotaqEECcqCqICMTSFHASHJ10FCATGZ4RbaqAlkQabD4RegkibhlerawqCbJ5OyGuukUkbaqWbGJ5ObqQgtiBaqe
X-IPAS-Result:A0CGBgCEyedW/3ZWO4DHGEBAG4BGKLMUM2XOJEKBDYFMBXUFACK2HGWI4FAEBAQEBAQEBAQFBQFKJ4RLIAOTAQEECCWGSQBCMCTCSTSFHASHJ10FCATGZ4RBAQSLKQABD4RegkibhlerawQCNBJ5MJ5YGUKBNGWBGJ5OB4KQGTIBAQQQQEQEQEQEQJ10FCATGZGZGZ4RBAQQBJ4RQBJ0FCAQBJ5FQ
X-IronPort-AV:E=Sophos;i=“5.243381454956200”;
d=“扫描208217”;a=“72486315”
X-Amp-Result:清洁
X-Amp-File-Uploaded:错误
收到:来自smtp.mydomain.com([139.59.240.124])
通过带有ESMTP/TLS/DHE-RSA-AES256-SHA的inmumg01.tcs.com;2016年3月15日14:09:37+0530
收到:从128.199.202.14(未知[128.199.202.14])
(经过身份验证的发件人:邮件发件人)
通过smtpa id为0D41F3FE11的smtp.mydomain.com(后缀)
对于2016年3月15日星期二04:39:33-0400(美国东部时间)
DKIM签名:v=1;a=rsa-sha256;c=放松/简单;d=kitemailer.com;
s=电子邮件;t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=日期:从:到:主题:列表取消订阅;
b=Xxaf++WE0B7HL+FN28O76DF7GYNEIK8EE9VPXRNMBCPGWPKWBMMFVDFCYIE3NBJ
GJiMxn/Yhn+EY6MR5AK5JO5N72YWLYTLM0REPMEYDAEHHVQPx7BE+LMDMlORSFin
bWdnz58lNMuZ3w9qtqjCXt22Sk5yXfCO71tRgfus=
DKIM签名:v=1;a=rsa-sha256;c=放松/简单;d=mydomain.com;
s=电子邮件;t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=日期:从:到:主题:列表取消订阅;
b=FigDkse9LCJYKFYYWQ65GBZOMZVCQS5OXJA35CYGQTJPWBVWIKVx7Z6FF39EBRLF
Vu+6Purvwzylfh/1CW0NGOHDgUDjWWQ2jHfnNpJ9QEbHgOwomuMty10HDeZnIr0zM7
8MFCGIIYUSQKHMXH5AYQD+Q/1wFcrpLpkBZc=
日期:2016年3月15日星期二04:39:31-0400(美国东部时间)
发件人:Kitemailer通讯
致:vipul4。j@tcs.com
消息ID:
主题:KiteMailer |本周新功能
MIME版本:1.0
内容类型:多部分/混合;
boundary=“---=”U部件--U 44--U 1398250960.145803171306”
取消订阅列表:
反馈ID:19:96:1520615:MyDomain
现在在else语句中,我想提取信息,如果我尝试
payload['to']
它会向我抛出一个错误TypeError:string索引必须是整数,而不是str
好吧,假设你无法用邮件库(我不知道)来实现它,您可以将原始消息转换为字典并获取元素:
print(mail_dico["To"])
>> 'vipul4.j@tcs.com'
print(mail_dico["Subject"])
>> 'KiteMailer | New Features this Week'
这是您的原始信息:
raw_message='''Return-Path: <>
X-Original-To: bounces@mydomain.com
Delivered-To: bounces@mydomain.com
Received: from inmumg01.tcs.com (inmumg01.tcs.com [219.64.33.12])
by smtp.mydomain.com (Postfix) with ESMTP id 603693FE11
for <bounces@mydomain.com>; Tue, 15 Mar 2016 04:39:36 -0400 (EDT)
Received: from localhost by inmumg01.tcs.com;
15 Mar 2016 14:09:38 +0530
Message-Id: <5aaa80$2543de@inmumg01.tcs.com>
Date: 15 Mar 2016 14:09:38 +0530
To: bounces@mydomain.com
From: "Mail Delivery System" <mail.notification@tcs.com>
Subject: Undeliverable Message
The following message to <vipul4.j@tcs.com> was undeliverable.
The reason for the problem:
5.1.0 - Unknown address error 550-'vipul4.j@tcs.com... No such user'
The IP address of the MTA to which the message could not be sent:
172.17.9.35
---------- A copy of the message begins below this line ----------
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE
X-IPAS-Result: A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE
X-IronPort-AV: E=Sophos;i="5.24,338,1454956200";
d="scan'208,217";a="72486315"
X-Amp-Result: Clean
X-Amp-File-Uploaded: False
Received: from smtp.mydomain.com ([139.59.240.124])
by inmumg01.tcs.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 15 Mar 2016 14:09:37 +0530
Received: from 128.199.202.14 (unknown [128.199.202.14])
(Authenticated sender: mailsender)
by smtp.mydomain.com (Postfix) with ESMTPA id 0D41F3FE11
for <vipul4.j@tcs.com>; Tue, 15 Mar 2016 04:39:33 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kitemailer.com;
s=kitemail; t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=Date:From:To:Subject:List-Unsubscribe;
b=Xxaf++WE0B7HL+FN28O76df7gYNEIKzk8eE9VpxrnMBCpGWPKWBMMfVDfCyie3NBJ
GJiMxn/Yhn+ey6Mr5R5AK5JO5n72yWlytLm0RepMEydaeHHVQPx7bE+LMDMlORSFin
bWdnz58lNMuZ3w9qtqjCXt22Sk5yXfCO71tRgfus=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mydomain.com;
s=kitemail; t=1458031173;
bh=1KFZSL77mNYuQ3iTjpNMdGcBOp2a4pGQnLVlq49ZrGg=;
h=Date:From:To:Subject:List-Unsubscribe;
b=FiGdkSE9LCjYkfYyWq65GbZoMZVCQs5OXXJA35CyGQtjPWbvwIKvx7Z6Ff39EBRLf
Vu+6PUrvwyZLFh/1CW0NGOHDgUDjWWQ2jHfnNpJ9QEbHgOwomuMty10HDeZnIr0zM7
8mFCgeCbiiyusQkhmXh5aYqqD+Q/1wFcrpLpkBZc=
Date: Tue, 15 Mar 2016 04:39:31 -0400 (EDT)
From: Kitemailer Newsletter <info@kitemailer.com>
To: vipul4.j@tcs.com
Message-ID: <15106466-1b13-4d64-b220-15f05f4815b7-1458031171312@smtp.mydomain.com>
Subject: KiteMailer | New Features this Week
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_44_1398250960.1458031171306"
List-Unsubscribe: <http://example.com/unsubscribe/dmlwdWw0LmpAdGNzLmNvbSM5Ng==>
Feedback-ID: 19:96:1520615:MyDomain'''
这是你的字典:
{'Content-Type': 'multipart/mixed;',
'DKIM-Signature': 'v=1; a=rsa-sha256; c=relaxed/simple; d=mydomain.com;',
'Date': 'Tue, 15 Mar 2016 04',
'Feedback-ID': '19',
'From': 'Kitemailer Newsletter <info@kitemailer.com>',
'List-Unsubscribe': '<http',
'MIME-Version': '1.0',
'Message-ID': '<15106466-1b13-4d64-b220-15f05f4815b7-1458031171312@smtp.mydomain.com>',
'Received': 'from 128.199.202.14 (unknown [128.199.202.14])',
'Subject': 'KiteMailer | New Features this Week',
'To': 'vipul4.j@tcs.com',
'X-Amp-File-Uploaded': 'False',
'X-Amp-Result': 'Clean',
'X-IPAS-Result': 'A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE',
'X-IronPort-AV': 'E=Sophos;i="5.24,338,1454956200";',
'X-IronPort-Anti-Spam-Filtered': 'true',
'X-IronPort-Anti-Spam-Result': 'A0CGBgCEyedW/3zwO4tdHgEBAg4BgklMUm2nXoJekBMBDYFmBxUFAQ2HGwI4FAEBAQEBAQFkJ4RLIAoTAQEECCwGSQMBCQICMTsFHASHJ10FCatgZ4RBAQSLKQaBD4REgkIBhlERAWqCNBOBJ5MJhEuBLwKEPogSAoIuhnOFYo1YgUUBAUKBNgwBgj5OB4kqgTIBAQE',
'h=Date': 'From'}
这可能不是最好的方法,但我希望它能有所帮助。您尝试按索引将元素
获取到,但有效负载
要求使用整数作为索引。调用print payload
(对于python 2)或print(payload)
(对于python 3)查看包含的元素。在这种情况下,payload
是一个字符串,元素是字符(符号)是的,你是对的,它打印字符串,但我如何从该字符串中提取标题?你能打印一个负载示例以便我们可以帮助你吗?@YOBA请检查,我已经添加了原始电子邮件
print(mail_dico["To"])
>> 'vipul4.j@tcs.com'
print(mail_dico["Subject"])
>> 'KiteMailer | New Features this Week'