Python MIMEText 向消息添加随机?不需要的新行

问题描述

我刚刚学习使用 smtplib 包和 MIMEText 中的 email.mime.text 函数发送自动邮件

似乎一切正常,但有时(并非总是如此!)我在发送的邮件中发现不需要的新行。我收到的邮件示例:

嗨,斯蒂芬,

您的自动搜索获得了存储在您的 discogs 应用程序中的每个版本的以下廉价列表:

没有找到 13669663 的廉价房源

:'Alloy Mental - 我是'..

这两行应该看起来像一行:没有找到 13669663 的廉价商品:'Alloy Mental - I am'..

我不确定为什么会发生这种情况,在少数情况下不会发生这种情况(release_idfull_title 的其他值,但我还没有注意到那里的模式..)>

我的代码如下:

import stmplib
import ssl
from email.mime.text import MIMEText
from logger import loguru

host = 'smtp.office365.com'
port = 587

def message_string(release_id,full_title):
    release_title = f"{release_id}: '{full_title}'"
    message = f"""\
Hi Stefan,Your automated search obtained the following cheap listings per release stored in you discogs application:
No cheap listings found for {release_title}..
"""
    return message


def create_message(release_id,full_title):
    message = message_string(release_id,full_title)
    msg = MIMEText(message.encode('utf-8'),_charset='utf-8')
    msg["Subject"] = "Daily discogs tracking results"
    msg["From"] = "xxx"
    msg["To"] = "yyy"
    return msg


def send_message(release_id,full_title):
    msg = create_message(release_id,full_title)
    context = ssl.create_default_context()
    with smtplib.SMTP(host=host,port=port) as server:
        server.starttls(context=context)
        server.login(user="xxx",password="zzz")
        server.sendmail(from_addr="xxx",to_addrs="yyy",msg=msg.as_string())
        logger.info("email send,quitting server..")
        server.quit()

当我运行 message_string 函数时,创建的字符串似乎没问题。但是在 MIMEText 部分或 send_message 部分的某处,它将这些字符串分成两半。有人能帮我理解这种情况是如何发生的以及为什么发生吗?

这发生在我发送的其中一封邮件中:

输入

msg = create_message(...)
print(msg.as_string())

输出

'Content-Type: text/plain; charset="utf-8"\nMIME-Version: 1.0\nContent-transfer-encoding: base64\nSubject: Daily discogs tracking results\nFrom: xxx\nTo: yyy\n\nSGkgU3RlZmFuLAoKWW91ciBhdXRvbWF0ZWQgc2VhcmNoIG9idGFpbmVkIHRoZSBmb2xsb3dpbmcg\nY2hlYXAgbGlzdgluZ3MgcGVyIHJlbGVhc2Ugc3RvcmVkIgluIHlvdSBEaXNjb2dzIGFwcGxpY2F0\naW9uOgpObyBjaGVhcCBsaXN0aW5ncyBmb3VuZCBmb3IgMTM2Njk2NjM6ICdSaWtodGVyIC0gUklL\nMScuLg0KDQpObyBjaGVhcCBsaXN0aW5ncyBmb3VuZCBmb3IgMTQxODY1MTogJ0FsbG95IE1lbnRh\nbCAtIEkgQW0nLi4NCg0KTm8gY2hlYXAgbGlzdgluZ3MgZm91bmQgZm9yIDEzNzY4NjgzOiAnREog\nR2lnb2xhLCBLZXYgS29rbyAtIFRlbmRlciBUcmFuY2UnLi4NCg0KIAoxIGxpc3RpbmdzIGZvdW5k\nIGZvciAxNTM2NzU0NDogJ1BhdWwgS2Fsa2JyZW5uZXIgLSBTcGVhayBVcCBFUCc6CisrIEJFU1Qg\nKDwg4oKsNDkuOTkpOgpObyBnb29kIGxpc3RpbmdzIGZvdW5kLi4KCisgR09PRCAoPCDigqw2Mi45\nOSk6Ci0gMTM1MzkwMjIwOTog4oKsNjIuOTUgKyDigqw3LjUgc2hpcHBpbmcuIFNlZSAoaHR0cDov\nL3d3dy5kaXNjb2dzLmNvbS8vc2VsbC9pdGVtLzEzNTM5MDIyMDkpCg0KDQpObyBjaGVhcCBsaXN0\naW5ncyBmb3VuZCBmb3IgNzM0NjEwodogJ1BhdWwgS2Fsa2JyZW5uZXIgLSA3Jy4uDQoNCk5vIGNo\nZWFwIGxpc3RpbmdzIGZvdW5kIGZvciA5OTUwNzogJ0FxdWlsYSAtIFJpdHVhbCBFUCcuLgoKClRo\nYW5rIHlvdSwKWW91ciBhdXRvbWF0ZWQgRGlzY29ncyBMaXN0aW5nIFRyYWNrZXIKICAgIA==\n'

编辑:切换到 email.messageEmailMessage(),现在我在打印时获得以下 msg.as_string() 结果:

'Subject: Daily discogs tracking results\nFrom: xxx\nTo: yyy\nMIME-Version: 1.0\nContent-Type: text/plain; charset="utf-8"\nContent-transfer-encoding: quoted-printable\n\nHi Stefan,\n\nYour automated search obtained the following cheap listings per release store=\nd in you discogs application:\nNo cheap listings found for 13669663: \'Rikhter - RIK1\'..\n\nNo cheap listings found for 1418651: \'Alloy Mental - I Am\'..\n\nNo cheap listings found for 13768683: \'DJ Gigola,Kev Koko - Tender Trance\'..\n\n=20\n1 listings found for 15367544: \'Paul Kalkbrenner - Speak Up EP\':\n++ BEST (< =E2=82=AC49.99):\nNo good listings found..\n\n+ GOOD (< =E2=82=AC62.99):\n- 1353902209: =E2=82=AC62.95 + =E2=82=AC7.5 shipping. See (http://www.discogs=\n.com//sell/item/1353902209)\n\n\nNo cheap listings found for 7346108: \'Paul Kalkbrenner - 7\'..\n\nNo cheap listings found for 99507: \'Aquila - Ritual EP\'..\n\n\nThank you,\nYour automated discogs Listing Tracker\n   =20\n'

当我在 Firefox 浏览器的 Outlook 中检查我的电子邮件时,我看到添加一个额外的
,例如:

...
   <div class='PlainText'>
      Hi Stefan,<br>
      <br>
      Your automated search obtained the following cheap listings per release stored in you discogs application:
      <br>
      No cheap listings found for 1418651
      <br>
      : 'Alloy Mental - I Am'..
      <br>
      <br>
      ....
   </div>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)