使用Gmail API发送AMP邮件,收件端内容无法解密
问题分析与解决办法
严格遵循AMP邮件的MIME结构
AMP邮件必须包含三个MIME部分,顺序固定为:纯文本(text/plain)、HTML(text/html)、AMP(text/x-amp-html)。结构缺失或顺序错误会导致收件端无法正确解析,表现为类似加密无法解密的乱码。Python脚本中要按此顺序构建邮件:from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText msg = MIMEMultipart('alternative') msg['Subject'] = 'AMP测试邮件' msg['From'] = 发件邮箱 msg['To'] = 收件邮箱 # 纯文本备用内容 plain_part = MIMEText('这是纯文本备用内容', 'plain', 'utf-8') # HTML备用内容 html_part = MIMEText('<p>这是HTML备用内容</p>', 'html', 'utf-8') # AMP核心内容 amp_part = MIMEText(你的AMP代码内容, 'x-amp-html', 'utf-8') msg.attach(plain_part) msg.attach(html_part) msg.attach(amp_part)确保内容编码为UTF-8
所有MIME部分必须指定UTF-8编码,避免因编码不兼容导致乱码。上述代码已在MIMEText构造时添加utf-8参数,务必保留。正确处理Gmail API的发送编码
发送时只需将整个MIMEMultipart对象转为字节流,再做base64url编码,禁止单独对AMP内容编码:import base64 from googleapiclient.discovery import build raw_msg = base64.urlsafe_b64encode(msg.as_bytes()).decode() send_body = {'raw': raw_msg} service.users().messages().send(userId='me', body=send_body).execute()验证域名邮件认证配置
Gmail、Yandex等邮箱对AMP邮件要求发件域名完成DKIM、SPF、DMARC认证,否则会屏蔽AMP内容或异常解析。登录你的谷歌云项目,确认域名已完成这些认证配置。
内容的提问来源于stack exchange,提问作者Abhay P A
相关产品推荐
相关产品推荐

