You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python SMTP调用AWS SES发邮件时遇'function' object has no attribute 'encode'错误

解决Python SMTP通过AWS SES发邮件时的'function' object has no attribute 'encode'错误

错误原因

  • 核心问题:msg['From'] = self.send_email 错误地将类的send_email方法对象赋值给邮件的From字段,而非正确的发件人邮箱地址。后续处理邮件时,程序尝试对方法对象执行encode操作,触发报错。
  • 次要问题:except for Exception as e: 存在语法错误,多余的for会导致异常捕获失效。

修复后的完整代码

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

import common.config_constants as constants


class Email_util:

    def __init__(self) -> None:
        self.smtp_server = 'email-smtp.us-east-1.amazonaws.com'
        self.smtp_port = constants.SMTP_PORT
        self.workmail_user = constants.SMTP_USER
        self.workmail_pass = constants.SMTP_PASS
        self.sender = constants.FORGOT_PASSWORD_EMAIL_HANDLER

    def send_email(self, receiver, subject, body):
        msg = MIMEMultipart()
        # 修正:使用预定义的发件人邮箱地址
        msg['From'] = self.sender
        msg['To'] = receiver
        msg['Subject'] = subject

        # Attach the email body
        msg.attach(MIMEText(body, 'plain'))

        try:
            # Establish a connection to Amazon WorkMail SMTP server
            server = smtplib.SMTP(self.smtp_server, self.smtp_port)
            server.starttls()

            # Login to Amazon WorkMail
            server.login(self.workmail_user, self.workmail_pass)

            # Send the email
            server.sendmail(self.sender, receiver, msg.as_string())

            print("Email sent successfully!")
            return True
        # 修正:移除多余的for关键字
        except Exception as e:
            print(f"Error sending email: {e}")
            return False

关键修复点说明

  • 替换msg['From']的赋值内容:把方法对象self.send_email换成类初始化时定义的发件人邮箱self.sender,确保From字段是合法的邮箱字符串。
  • 修正异常捕获语法:删除except后的for关键字,让异常处理逻辑正常工作。

内容的提问来源于stack exchange,提问作者Biswas Sampad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:23:14