使用 AWS SES + Python SMTP 时“函数”对象没有属性“编码”错误

问题描述 投票:0回答:1

我尝试使用 AWS SES 从 python smtp 发送电子邮件,但收到此错误。

'function' object has no attribute 'encode'

电子邮件发送看起来像这样

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
        pass

    def send_email(self, receiver, subject, body):
        msg = MIMEMultipart()
        msg['From'] = self.send_email
        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
        except for Exception as e:
            print(f"Error sending email: {e}")
            return False

任何帮助表示赞赏。预先感谢

python amazon-web-services email smtp amazon-ses
1个回答
0
投票
    def send_email(self, receiver, subject, body):
        msg = MIMEMultipart()
        msg['From'] = self.send_email

您将函数

self.send_email
作为
msg['From']
的值,这应该是一个字符串。 Python 中的字符串有一个名为
encode
的属性,它实际上是一个用于将其从一种格式转换为另一种格式的函数(例如,将“UTF-8”转换为字节数组)。

希望有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.