为啥 python3 中的 smtp.sendmail 不发送主题?

Posted

技术标签:

【中文标题】为啥 python3 中的 smtp.sendmail 不发送主题?【英文标题】:Why is smtp.sendmail in python3 not sending the subject?为什么 python3 中的 smtp.sendmail 不发送主题? 【发布时间】:2021-12-01 06:12:04 【问题描述】:

我有这个发送邮件的功能:

    def sendmail(self,ffrom,to,subject,message ="",cc = "",adj = None,msgtype = "html", codificacion='utf-8'):
        to = to.replace(" ","")
        cc = cc.replace(" ","")
        email = to
        if(cc != ""):
            email += "," + cc
        email = email.replace(" ","")

        msg = MIMEMultipart()

        msg['From'] = ffrom
        msg['To'] = to
        msg['Subject'] = subject
        msg['Cc'] = cc

        if(adj != None):
            for file in adj.split(","):
                file_name = file.split("/")[-1]
                part = MIMEBase('application', "octet-stream")
                fc = open(file, "rb")
                part.set_payload(fc.read())
                encoders.encode_base64(part)
                part.add_header('Content-Disposition', 'attachment; filename="%s"' % (file_name))
                msg.attach(part)
                fc.close()
        t=MIMEText(message, msgtype, _charset=codificacion)
        msg.attach(t)
        #self.smtp.set_debuglevel(True)
        try: 
            #smtp = smtplib.SMTP('smtp-mi.risorse.enel:25') 
            print(msg['Subject'])
            print(msg.as_string())
            self.smtp.sendmail(msg['From'],email.split(","), msg.as_string()) 
            print ("\\nCorreo enviado\\n") 
        except: 
            print ('\nError: el mensaje no pudo enviarse. Compruebe que sendmail se encuentra instalado en su sistema\n')

而且大多数时候它运行良好。但是,有时它不会发送主题。

我已经打印了主题,它就在那里。

【问题讨论】:

你有没有检查收到的消息的原始来源,看看是否有主题? 【参考方案1】:

我找到了问题的原因。

在收件人列表中,有一个换行符 (\n)。

解决办法是:

msg['To'] = to.replace(" ",'').replace("\n",'') 

在发送邮件之前删除空格和换行符。

【讨论】:

以上是关于为啥 python3 中的 smtp.sendmail 不发送主题?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python 3 中的切片仍然是副本而不是视图?

Python 3-为啥我在这个作业问题中的 try 和 except 函数没有编译? [关闭]

为啥xml包在Python3中修改我的xml文件?

为啥 Plotly(在 Python3 中)不在折线图中制作不同的线?

使用 Python3 将 Bytes 对象转换为 Pandas 数据帧会产生一个空数据帧。为啥?

为啥 Python3 中没有 xrange 函数?