Ошибка "LazyImporter объект не вызывается" при попытке отправить письмо с помощью python smtplib

Ошибка получения объекта "LazyImporter" не вызывается "при попытке отправить электронное письмо с вложениями с помощью python smtplib из gmail. Я включил параметр разрешить меньше приложений безопасности в отправителя Gmail

Код:

import smtplib
from email import MIMEBase
from email import MIMEText
from email.mime.multipart import MIMEMultipart
from email import Encoders
import os

def send_email(to, subject, text, filenames):
    try:
        gmail_user = 'xx@gmail.com'
        gmail_pwd = 'xxxx'

        msg = MIMEMultipart()
        msg['From'] = gmail_user 
        msg['To'] = ", ".join(to)
        msg['Subject'] = subject

        msg.attach(MIMEText(text))

        for file in filenames:
            part = MIMEBase('application', 'octet-stream')
            part.set_payload(open(file, 'rb').read())
            Encoders.encode_base64(part)
            part.add_header('Content-Disposition', 'attachment; filename="%s"'% os.path.basename(file))
            msg.attach(part)

        mailServer = smtplib.SMTP("smtp.gmail.com:587") #465,587
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(gmail_user, gmail_pwd)
        mailServer.sendmail(gmail_user, to, msg.as_string())
        mailServer.close()
        print('successfully sent the mail')

    except smtplib.SMTPException,error::

        print str(error)


if __name__ == '__main__':
    attachment_file = ['t1.txt','t2.csv']
    to = "xxxxxx@gmail.com" 
    TEXT = "Hello everyone"
    SUBJECT = "Testing sending using gmail"

    send_email(to, SUBJECT, TEXT, attachment_file)

Ошибка: файл "test_mail.py", строка 64, в send_email(в, SUBJECT, TEXT, файл вложения) Файл "test_mail.py", строка 24, в send_email msg.attach(MIMEText(text)) TypeError: объект 'LazyImporter' не вызывается

1 ответ

Решение

Как сказал @How о nope, с помощью оператора import вы импортируете модуль MIMEText, а не класс. Я могу воспроизвести ошибку из вашего кода. Когда я импортирую из email.mime.text вместо этого, ошибка исчезает.

Другие вопросы по тегам