通过 Gmail API 发送电子邮件分段/签名 (RFC 3156)

Leo*_*one 5 python email google-schemas gmail-api

尝试构建符合 RFC3156 [0] 的消息,并通过 Gmail API 发送(我使用的是 python 客户端实现)。

我得到的是:在我的 Gmail 邮箱中,邮件已正确发送(我看到的正是我之前构建的邮件)·

我的接收者得到的是:一个“多部分/混合”消息,其有效载荷与我发送的消息相同。

似乎在某些时候,Gmail 更改了我的 Content-Type ......这是真的吗?

作为解决方法,我正在使用 SMTP 连接(它的行为与我预期的一样,正确发送消息),但将来我希望避免这一步,转而使用纯 Gmail API 应用程序。

你能确认这个问题吗?

[0] - 这是一个测试示例:

发送消息:

message_as_str = '''Content-Type: multipart/signed; protocol="application/pgp-signature";\n micalg="pgp-sha512"; boundary="===============0594182808971957567=="\nMIME-Version: 1.0\nDate: Wed, 12 Nov 2014 12:18:02 +0100\nSubject: A test email\nFrom: Leo Iannacone <l3on@ubuntu.com>\nTo: Andrea Colangelo <warp10@ubuntu.com>\n\n--===============0594182808971957567==\nContent-Type: text/plain; charset="utf-8"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\nHello,\r\n\r\nthis is a signed email (RFC 3156).\r\n\r\nBest,\r\nL.\r\n\r\n-- =\r\n\r\nUbuntu Member - http://launchpad.net/~l3on\r\nHome Page - http://leoiannacone.com\r\nGPG Key Id - 0xD282FC25\r\n\n--===============0594182808971957567==\nContent-Type: application/pgp-signature; name="signature.asc"\nContent-Description: GooPG digital signature\n\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABCgAGBQJUY0JcAAoJEDMrlP7SgvwlQakP/jmw6OOcafFAxMnMZNBREnG6\nGF3cG/ACJ6BeYhOb0Q2HFQrUKACbsB8QaTxSCf3q7O0HIl5Atr9IVmVIoUuHOM9M\nZt66LWQ3ZUpvyulBswYOq4ERkeeAZh8AYHCz81SUWt42PDn+RrrKESifkgOgy1cM\nUpNUXX99cppdY3w1oKVS0SFdhT4ZDNSr6PVUzPzWOHNk3OGOg4okTJOag3lp5R1x\nIMQ4plOFNNUs1bDDOpH75TOOGIAdqqgInH5fOk8h2djrPyCozhyllrpCJdiCkrj9\njkL/m0nNS/wHW/pnqSPHZuMDrEYCiiI4fqJYZUkiXQu/koDt40TUqAdeEy1HWJS2\npPqqXjjiZ1jlQ2IBbOG8YfgsLmexTyNE6CmPBXiVk6zY2hnhA6sjq/I9qF8F73SS\nFALfkbdRddN7NMzjFVES3eV2gfrUrQnxru2G8urUeeQ2POQrxsGQvb5CrK7VMaUx\nteB9UruIpPLNUYR0E7Cr17lqlMR5ILdSlx5xFxIIjg3pfItHQXoOfyusoO1xt8XK\ntY8oateT4dgwfR2qrguAnZ96vXtI1soqy8P1TLrJAI/d95kIw4PMzWVm1GjyUiRe\ngPhYqvGQV6jc0oUCp+/1MXGUe0zb0meMnBu2f3e/h5Lxkd2z4lPPdxejpNaFc2H1\nuC+56ZJxbKlu73UPsTYh\n=gQKI\n-----END PGP SIGNATURE-----\n\n--===============0594182808971957567==--'''

raw = base64.urlsafe_b64encode(message_as_str)
gmail_service.users().messages().send(userId='me', body={'raw':raw}).execute()
Run Code Online (Sandbox Code Playgroud)

我的sentbox里有:

message_as_str = '''Content-Type: multipart/signed; protocol="application/pgp-signature";\n micalg="pgp-sha512"; boundary="===============0594182808971957567=="\nMIME-Version: 1.0\nDate: Wed, 12 Nov 2014 12:18:02 +0100\nSubject: A test email\nFrom: Leo Iannacone <l3on@ubuntu.com>\nTo: Andrea Colangelo <warp10@ubuntu.com>\n\n--===============0594182808971957567==\nContent-Type: text/plain; charset="utf-8"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\nHello,\r\n\r\nthis is a signed email (RFC 3156).\r\n\r\nBest,\r\nL.\r\n\r\n-- =\r\n\r\nUbuntu Member - http://launchpad.net/~l3on\r\nHome Page - http://leoiannacone.com\r\nGPG Key Id - 0xD282FC25\r\n\n--===============0594182808971957567==\nContent-Type: application/pgp-signature; name="signature.asc"\nContent-Description: GooPG digital signature\n\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABCgAGBQJUY0JcAAoJEDMrlP7SgvwlQakP/jmw6OOcafFAxMnMZNBREnG6\nGF3cG/ACJ6BeYhOb0Q2HFQrUKACbsB8QaTxSCf3q7O0HIl5Atr9IVmVIoUuHOM9M\nZt66LWQ3ZUpvyulBswYOq4ERkeeAZh8AYHCz81SUWt42PDn+RrrKESifkgOgy1cM\nUpNUXX99cppdY3w1oKVS0SFdhT4ZDNSr6PVUzPzWOHNk3OGOg4okTJOag3lp5R1x\nIMQ4plOFNNUs1bDDOpH75TOOGIAdqqgInH5fOk8h2djrPyCozhyllrpCJdiCkrj9\njkL/m0nNS/wHW/pnqSPHZuMDrEYCiiI4fqJYZUkiXQu/koDt40TUqAdeEy1HWJS2\npPqqXjjiZ1jlQ2IBbOG8YfgsLmexTyNE6CmPBXiVk6zY2hnhA6sjq/I9qF8F73SS\nFALfkbdRddN7NMzjFVES3eV2gfrUrQnxru2G8urUeeQ2POQrxsGQvb5CrK7VMaUx\nteB9UruIpPLNUYR0E7Cr17lqlMR5ILdSlx5xFxIIjg3pfItHQXoOfyusoO1xt8XK\ntY8oateT4dgwfR2qrguAnZ96vXtI1soqy8P1TLrJAI/d95kIw4PMzWVm1GjyUiRe\ngPhYqvGQV6jc0oUCp+/1MXGUe0zb0meMnBu2f3e/h5Lxkd2z4lPPdxejpNaFc2H1\nuC+56ZJxbKlu73UPsTYh\n=gQKI\n-----END PGP SIGNATURE-----\n\n--===============0594182808971957567==--'''

raw = base64.urlsafe_b64encode(message_as_str)
gmail_service.users().messages().send(userId='me', body={'raw':raw}).execute()
Run Code Online (Sandbox Code Playgroud)

我的接收器得到的是精确的:

Received: from 333313917298-rr7th7jvf4alej59jkv5bbs2fl8sc0j9.apps.googleusercontent.com
    named unknown
    by gmailapi.google.com
    with HTTPREST;
    Wed, 12 Nov 2014 03:23:50 -0800
Content-Type: multipart/signed; protocol="application/pgp-signature";
 micalg="pgp-sha512"; boundary="===============0594182808971957567=="
MIME-Version: 1.0
Date: Wed, 12 Nov 2014 03:23:50 -0800
Subject: A test email
From: Leo Iannacone <l3on@ubuntu.com>
To: Andrea Colangelo <warp10@ubuntu.com>
Message-Id: <CACzqv1fvmbg2Er0Fi-poFSfEDaCLXxW-WGQr8dwHma6t9NjBzA@mail.gmail.com>

--===============0594182808971957567==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hello,

this is a signed email (RFC 3156).

Best,
L.

-- =

Ubuntu Member - http://launchpad.net/~l3on
Home Page - http://leoiannacone.com
GPG Key Id - 0xD282FC25

--===============0594182808971957567==
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: GooPG digital signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAABCgAGBQJUY0JcAAoJEDMrlP7SgvwlQakP/jmw6OOcafFAxMnMZNBREnG6
GF3cG/ACJ6BeYhOb0Q2HFQrUKACbsB8QaTxSCf3q7O0HIl5Atr9IVmVIoUuHOM9M
Zt66LWQ3ZUpvyulBswYOq4ERkeeAZh8AYHCz81SUWt42PDn+RrrKESifkgOgy1cM
UpNUXX99cppdY3w1oKVS0SFdhT4ZDNSr6PVUzPzWOHNk3OGOg4okTJOag3lp5R1x
IMQ4plOFNNUs1bDDOpH75TOOGIAdqqgInH5fOk8h2djrPyCozhyllrpCJdiCkrj9
jkL/m0nNS/wHW/pnqSPHZuMDrEYCiiI4fqJYZUkiXQu/koDt40TUqAdeEy1HWJS2
pPqqXjjiZ1jlQ2IBbOG8YfgsLmexTyNE6CmPBXiVk6zY2hnhA6sjq/I9qF8F73SS
FALfkbdRddN7NMzjFVES3eV2gfrUrQnxru2G8urUeeQ2POQrxsGQvb5CrK7VMaUx
teB9UruIpPLNUYR0E7Cr17lqlMR5ILdSlx5xFxIIjg3pfItHQXoOfyusoO1xt8XK
tY8oateT4dgwfR2qrguAnZ96vXtI1soqy8P1TLrJAI/d95kIw4PMzWVm1GjyUiRe
gPhYqvGQV6jc0oUCp+/1MXGUe0zb0meMnBu2f3e/h5Lxkd2z4lPPdxejpNaFc2H1
uC+56ZJxbKlu73UPsTYh
=gQKI
-----END PGP SIGNATURE-----

--===============0594182808971957567==--
Run Code Online (Sandbox Code Playgroud)

如您所见... 内容类型与我发送的邮件中的内容以及我收到的收件箱中的内容不同。

Eri*_*eda 3

根据我的测试,这似乎是 Gmail API 的问题。目前尚不清楚 API 是否计划支持此用例,但我已向工程团队提出了这个问题。