当前位置: 首页 > 面试题库 >

如果邮件中包含某些字符,smtplib将发送空白邮件

颛孙昆
2023-03-14
问题内容

我当前的脚本可以让我很好地发送电子邮件,但是有些字符不受欢迎,尤其是':'在此示例中。

import smtplib, sys

mensaje = sys.argv[1]
def mailto(toaddrs, msg):
    fromaddr = 'myemailblabla'

    username = 'thisismyemail'
    password = '122344'

    server = smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(username, password)
    server.sendmail(fromaddr, toaddrs, msg)
    server.quit()

mailto('test@gmail.com', mensaje)

如果我写了一个示例消息,例如,说它"Hi there\n how are you?"工作正常,但假设我尝试发送url
http://www.neopets.com,则电子邮件发送为空白。我相信是':'造成此问题的原因,因此我尝试将其转义,但是什么也没有。


问题答案:

问题是,smtplib没有在邮件标题和邮件正文之间放置空白行,如我的测试的“显示原始”形式所示:

Return-Path: <me@gmail.com>
Received: **REDACTED**
        Fri, 03 Aug 2012 06:56:20 -0700 (PDT)
Message-ID: <501bd884.850c320b@mx.google.com>
Date: Fri, 03 Aug 2012 06:56:20 -0700 (PDT)
From: me@gmail.com
http: //www.example.com

尽管这是合法的邮件头,但邮件传输代理和邮件用户代理应忽略它们不理解的明显的头字段。并且因为RFC822标头一直持续到第一行空白行,并且http:看起来像标头行,所以将其解析为标头。如果给定换行符:

mensaje = '\nhttp://www.example.com'

然后它按预期工作。尽管从技术上来说,电子邮件只需要smtplib邮件内容所提供的“信封”,但是如果您希望收件人(及其邮件发件人)能够很好地对待邮件,则应该使用电子邮件模块生成正文。

添加

基于其中的doctest,smtplib.py这似乎是一项有意功能,允许的调用方sendmail()追加到标头:

     >>> msg = '''\\
     ... From: Me@my.org
     ... Subject: testin'...
     ...
     ... This is a test '''
     >>> s.sendmail("me@my.org", tolist, msg)

上面的From:Subject:行是我上面提到的“ nice”标题的一部分。



 类似资料:
  • 本文向大家介绍Python smtplib实现发送邮件功能,包括了Python smtplib实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python smtplib发送邮件功能的具体代码,供大家参考,具体内容如下 解决之前版本的问题,下面为最新版 配置文件emailConfig.ini 路径要与程序对应 之前版本出现的问题: 已测试通过,使用Header并没有变

  • 我使用以下代码从我的应用程序发送电子邮件: 使用上述代码,我可以将电子邮件发送到收件人的电子邮件地址,但是,主题字段为空,收件人字段也为空,而所有收件人都显示在电子邮件的密件抄送字段中。此外,附件以字节字符串的形式出现,而不是可下载的pdf文件。下面是一个示例: user@gmail.com到密件抄送:user@outlook.com,密件抄送:user@domain.com ------=\u

  • 问题内容: 我有一段非常简单的代码(仅用于测试): 这可行,但问题是电子邮件客户端不显示发件人。我希望能够将发件人名称添加到电子邮件中。有什么建议吗? 问题答案: 不会自动包含标题,因此您必须自己放置一个: (实际上,不会自动包含 任何 标题,而只是将您提供的文本作为原始消息发送)

  • 本文向大家介绍python3使用smtplib实现发送邮件功能,包括了python3使用smtplib实现发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 在之前的工作中,业务方做了一些调整,提出了对一部分核心指标做更细致的拆分并定期产出的需求。出于某些原因,这部分数据不太方便在报表上呈现,因此就考虑通过邮件的方式定期给业务方发送数据。 当时本来使用的是linux自带的mail命令来实现,然而

  • 本文向大家介绍python smtplib模块实现发送邮件带附件sendmail,包括了python smtplib模块实现发送邮件带附件sendmail的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python smtplib实现发送邮件的具体代码,供大家参考,具体内容如下 从网上找了些资料,不会有个别错误,上面代码经调试测试通过。 以上就是本文的全部内容,希望对大家的学习有所帮