web-dev-qa-db-fra.com

Attachez un fichier txt dans Python smtplib

J'envoie un e-mail en texte brut comme suit:

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

def send_message():
    msg = MIMEMultipart('alternative')
    s = smtplib.SMTP('smtp.sendgrid.net', 587)
    s.login(USERNAME, PASSWORD)

    toEmail, fromEmail = [email protected], [email protected]
    msg['Subject'] = 'subject'
    msg['From'] = fromEmail
    body = 'This is the message'

    content = MIMEText(body, 'plain')
    msg.attach(content)
    s.sendmail(fromEmail, toEmail, msg.as_string())

En plus de ce message, je voudrais joindre un fichier txt, 'log_file.txt'. Comment puis-je joindre un fichier txt ici?

29
David542

De la même manière, en utilisant msg.attach:

from email.mime.text import MIMEText

filename = "text.txt"
f = file(filename)
attachment = MIMEText(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename=filename)           
msg.attach(attachment)
40
Mariusz Jamro

Ça marche pour moi

sender = '[email protected]'
receivers = 'who'

msg = MIMEMultipart()
msg['Subject'] = 'subject'
msg['From'] = 'spider man'
msg['To'] = '[email protected]'
file='myfile.xls'

msg.attach(MIMEText("Labour"))
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(open(file, 'rb').read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(attachment)

print('Send email.')
conn.sendmail(sender, receivers, msg.as_string())
conn.close()
1
Kairat Koibagarov