python - 如何通过 GMAIL-API for python 发送多部分 HTML 和 PLAIN 格式的电子邮件
问题描述
我有一个与如何通过 gmail-api for python 发送 HTML 格式的电子邮件中的最后一个答案相关的问题,但不幸的是,答案对我不起作用。如果我附加了“plain”和“html”部分,它只接受我发出的最后一个“attach”调用。也就是说,如果我在 'html' 之后附加为 'plain',它只会作为 'plain' 发送(在具有 HTML 渲染的设备/应用程序上看起来没有吸引力)。但是如果我在 'plain' 之后附加 'html',它只发送“html”格式(在没有 HTML 渲染的设备/应用程序上看起来很糟糕)。与发布该问题的人不同,我确实需要这两个部分,因为接收我的电子邮件的一些设备/应用程序不呈现 HTML 并且需要纯文本部分。
如果我使用 'smtplib' 而不是 GMAIL-API,这不是问题,但我想使用 gmail api 来提高我的应用程序的安全性。
这是我的代码:
message = MIMEMultipart('alternative')
message['to'] = to_email
message['from'] = from_email
message['subject'] = subject
body_plain = MIMEText(email_body,'plain')
message.attach(body_plain)
body_html_format="<u><b>html:<br>"+email_body+"</b></u>"
body_html = MIMEText(body_html_format,'html')
message.attach(body_html) # PROBLEM: Will only send as HTML since this was added LAST.
raw_string = base64.urlsafe_b64encode(message.as_bytes()).decode()
request = service.users().messages().send(userId='my.email@gmail.com',body={'raw':raw_string})
message = request.execute()
谢谢和问候, 道格
解决方案
推荐阅读
- azure-devops - 如何构建 Docker 镜像然后使用构建的镜像运行测试
- vba - 表中的不同部分(多个空行)。创建一个条件循环,将空行输入到正确的部分 - VBA
- python - 如何在字典中添加双引号?
- c# - 当月列不超过1个月时如何抑制水晶报表页脚
- python-3.x - 我可以使用 twitter api 进行选择投票吗?tweepy有什么方法吗?
- javascript - 在可下载文件中添加换行符
- c++ - 与路由器断开连接后如何恢复与主机的连接?
- amazon-web-services - AWS 访问密钥和联合
- json - 使用 rfc4627 从 erlang 中的 json 数组中获取特定数据
- android - 将应用图像文件夹设置为“从图库中选择图像”等事件的默认文件夹