Ошибка "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 вместо этого, ошибка исчезает.