IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django:发送附件邮件,提示 nm address = addrValueError: not enough values to unpack (expected 2 got 1) -> 正文阅读

[Python知识库]Django:发送附件邮件,提示 nm address = addrValueError: not enough values to unpack (expected 2 got 1)

错误代码:

class SendFileMailThread(threading.Thread):
    """
    异步发送带附件的邮件
    """

    def __init__(self, subject, content, recipient_list, file_dict_list=None):
        """

        :param subject:
        :param content:
        :param recipient_list:
        :param file_dict_list: [{
                            "fileName": "",
                            "filePath": ""
                        }]
        """
        self.read_config = ReadConfig()
        self.subject = subject
        self.content = content
        self.from_email = self.read_config.get_email("EMAIL_HOST_USER")
        self.recipient_list = recipient_list
        self.file_dict_list = file_dict_list
        threading.Thread.__init__(self)

    def run(self):
        subject = self.subject,
        message = self.content,
        from_email = self.from_email,  # 发件人
        recipient_list = self.recipient_list,  # 收件人
        html_message = self.content,

        msg = EmailMultiAlternatives(subject=subject, body=content, from_email=from_email, to=recipient_list)

        msg.attach_alternative(content=content, mimetype="text/html")
        # add attachment
        if self.file_dict_list:
            for file_ in self.file_dict_list:
                file_name = os.path.basename(file_["fileName"])
                # 对文件进行编码处理
                b = make_header([(file_name, 'utf-8')]).encode('utf-8')
                with open(file_["filePath"], "rb") as fp:
                    msg.attach(b, fp.read())  # 传入文件名和附件
        msg.send()

代码运行后一直报错:

/xxx/xxx/python3.9/site-packages/django/core/mail/message.py", line 96, in sanitize_address
    nm, address = addr
ValueError: not enough values to unpack (expected 2, got 1)

最后发现原因是:在def run(self)中, 下列代码赋值后,全都变成了tuple类型。

PS:复制的时候把逗号也复制了,导致赋值错误。

subject = self.subject,
message = self.content,
from_email = self.from_email,  # 发件人
recipient_list = self.recipient_list,  # 收件人
html_message = self.content,

正确代码:去掉逗号,或者直接用self赋值

class SendFileMailThread(threading.Thread):
    """
    异步发送带附件的邮件
    """

    def __init__(self, subject, content, recipient_list, file_dict_list=None):
        """

        :param subject:
        :param content:
        :param recipient_list:
        :param file_dict_list: [{
                            "fileName": "",
                            "filePath": ""
                        }]
        """
        self.read_config = ReadConfig()
        self.subject = subject
        self.content = content
        self.from_email = self.read_config.get_email("EMAIL_HOST_USER")
        self.recipient_list = recipient_list
        self.file_dict_list = file_dict_list
        threading.Thread.__init__(self)

    def run(self):
        # subject = self.subject
        # message = self.content
        # from_email = self.from_email  # 发件人
        # recipient_list = self.recipient_list  # 收件人
        # html_message = self.content

        msg = EmailMultiAlternatives(subject=self.subject, body=self.content, from_email=self.from_email, to=self.recipient_list, headers={'Message-ID': 'foo'})

        msg.attach_alternative(content=self.content, mimetype="text/html")
        # add attachment
        if self.file_dict_list:
            for file_ in self.file_dict_list:
                file_name = os.path.basename(file_["fileName"])
                # 对文件进行编码处理
                b = make_header([(file_name, 'utf-8')]).encode('utf-8')
                with open(file_["filePath"], "rb") as fp:
                    msg.attach(b, fp.read())  # 传入文件名和附件
        msg.send()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:58:23  更:2022-03-06 13:00:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:54:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码