1

I did some google researches and found a lot of stuff. Unfortunately I do not understand what I found so I need to open a new "public request". As I told in my title already I want to attach a .txt file to my email. Sorry to ask that again after thousands of people already did this, but here is my method to send the mail:

import smtplib, ssl
from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
import config

#creating file to write the keys in later
file = open("my_filename.txt", "w+")

#creating subject and message for the email
subject = "Test123 new / updated"
msg = "look in attachment"

def send_mail(subject, msg)
    try:
        server = smtplib.SMTP("smtp.gmail.com:587")
        server.ehlo()
        server.starttls()
        server.login(config.EMAIL_ADDRESS, config.PASSWORD)
        message = "Subject: {}\n\n{}".format(subject, msg)
        server.sendmail(config.EMAIL_ADDRESS, config.EMAIL_RECEIVER, message)
        server.quit()
        print("success: Email sent!")
    except:
        print("Email failed to send")

This worked fine for me (just managed it with some research too. To attach the file finally I found something like that:

msg = MIMEMultipart()
#some other code to create a mail with subject and stuff like that
msg.attach(MIMEText(text))

If I change "text" to "my_filename.txt" it do not work. What do I need to change?

  • 1
    Possible duplicate of [How to send email attachments?](https://stackoverflow.com/questions/3362600/how-to-send-email-attachments) – Trapli Sep 13 '19 at 19:31

1 Answers1

0

ahh, I had an other own idea. I removed the line "msg = "look in attachment"" and instead of this I used the method file.read(). So my line where I send the mail looks like this now:

server.sendmail(config.EMAIL_ADDRESS, config.EMAIL_RECEIVER, file.read())