【问题标题】:Receiving base64-email instead of normal string接收 base64 电子邮件而不是普通字符串
【发布时间】:2019-01-31 11:04:14
【问题描述】:

我编写了一段非常简单的代码来将简单的字符串发送到我的 gmail,并且在使用小字符串时效果很好; 当我开始使用更大的字符串时,我收到了一堆加密文本,而不是普通字符串。

有人遇到这种问题吗?它是否与安全有关,是否可以避免?

def send_email(sender_email,receiver_email,password,txt, subject) :

    message = MIMEMultipart(txt)
    message["Subject"] = subject
    message["From"] = sender_email
    message["To"] = receiver_email

    # Turn these into plain/html MIMEText objects
    part1 = MIMEText(txt, "plain")
    message.attach(part1)

    context = ssl.create_default_context()

    with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as     server: 
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, txt)

这是我收到的:

TsK6IEFsYXJtZTogKDcyCk1lbnNhZ2VtOiAgJ0FWSVNPIC0gU0VSVk8nClRpcG8gZGUgRXJybzog ICdFJwpTdGF0dXMgcGFyYWRvOiAgJ0gnClByb2NlZGltZW50byBkZSBlbGltaW5hw6fDo286ICAn TycKRXhpYmnDp8Ojb286ICAnQXp1bCcKQ2F1c2E6ICAnTyBzZXJ2byBtb3RvciBlc3TDoSBjYXJy ZWdhZG8gZGUgZm9ybWEgYW5vcm1hbC4nCkHDp8OjbzogICdEZXNsaWd1ZSBvIE5DIGUgYSBtw6Fx dWluYQo=

【问题讨论】:

  • 它是base64,在谷歌搜索解码器
  • 问题是,我假设要接收电子邮件的人无法访问解码器,或者需要立即阅读文本
  • 为了解决这个问题,您需要更改MIMEText 的编码机制,默认为base64。您可以在encoders docs 中获取有关编码机制的更多详细信息
  • 我可以问一个问题吗?如果您以后不使用它,为什么要构建message?还是在代码的不同部分?
  • 1:你可能想用MIMEText是的,2:server.sendmail(sender_email, receiver_email, txt)应该是server.sendmail(sender_email, receiver_email, message)

标签: python python-3.x


【解决方案1】:

就像 Torxed 说的 "你可能想使用 MIMEText 是的,并且 2: server.sendmail(sender_email, receiver_email, txt) 应该是 server.sendmail(sender_email, receiver_email, message)"

这和 server.sendmail(sender_email, receiver_email, message.as_string)

“message.as_string”

显然解决了这个问题! 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多