att1 = [u'201902260920AM.log']
msg = MIMEText("EmailOperator testing email.")
msg['Subject'] = "EmailOperator testing email."
msg['From'] = "Airflow_Notification_No_Reply@novantas.Com"
msg['To'] = "rxie@novantas.com"
msg['files'] = att1[0].encode("utf-8")
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
Вероятно, это должно сработать.
Факт, что вы используете [u'ABC']
, будет одноэлементным списком строк Unicode.
Таким образом, вам необходимо преобразовать список в одну строку Unicode, а затем преобразовать его в utf-8
.
ОБНОВЛЕНИЕ:
import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
files = ['/home/pasle/airflow/logs/pipeline_client1/send_email/2019-02-27T01:40:38.451894+00:00/1.log',
'/home/pasle/airflow/logs/pipeline_client1/send_email/2019-02-27T01:40:38.451894+00:00/2.log']
msg = MIMEMultipart()
msg['From'] = 'Airflow_Notification_No_Reply@novantas.com'
msg['To'] = 'rxie@novantas.com'
msg['Subject'] = 'Email operator testing email.'
message = MIMEText('Email operator testing email body text.')
msg.attach(message)
for f in files:
with open(f, "rb") as file:
part = MIMEApplication(
file.read(),
Name=basename(f)
)
# After the file is closed
part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
msg.attach(part)
gmail_sender = 'sender@gmail.com'
gmail_passwd = 'password'
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(gmail_sender, gmail_passwd)
server.send_message(msg)
server.quit()
Когда я изучил вашу проблему, Attribute Error
происходил из-за того, что msg
не был объявлен как MIMEMultipart()
метод.