Je souhaite envoyer un e-mail via python affichant un logo. L'image est une image png dans le même répertoire.Joindre une image PNG en Python Email
J'utilise un simple code que j'ai trouvé ici dans le but, mais quand je l'envoie à mon propre compte, il n'y a pas d'image. Il n'y a pas de pièce jointe à référencer pour produire l'image. Quelqu'un pourrait-il me dire ce qu'il me manque?
from tkinter import *
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import csv
import time
from string import Template
import warnings
root = Tk()
root.geometry('200x200')
email_label = Label(root, text="Enter your email")
email_label.pack()
username = Entry(root, width = 30)
username.pack()
password_label = Label(root, text="Enter your password")
password_label.pack()
password = Entry(root, show="*", width = 30)
password.pack()
def add_var():
a = 0
user_name = username.get()
pass_word = password.get()
with open("emailtk.csv") as f:
reader = csv.reader(f)
for row in reader:
a+=1
time.sleep(3)
try:
address = row[0]
first_name = row[1]
last_name = row[2]
name = first_name+last_name
company = row[4]
print("Event", a)
print("Will now send an email to %s %s at %s at %s" % (first_name, last_name, company, address))
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = user_name
msg['To'] = address
html = """\
<html>
<head></head>
<body>
<p>
stuff
</p>
</body>
</html>
""".format(n = name, org = company)
part1 = MIMEText(html, 'html')
msg.attach(part1)
img = "logo.png"
img_data = open(img, "rb").read()
image = MIMEImage(img_data, name = os.path.basename(img))
msg.attach(image)
msg.attach(msgImage)
s = smtplib.SMTP('Server.com', Socket)
s.ehlo()
s.starttls()
s.login(user_name,pass_word)
s.sendmail(user_name, address, msg.as_string())
print("email sent")
s.quit()
except:
pass
print("Done")
button = Button(root, text = "Submit", command = add_var)
button.pack()
root.mainloop()
Voici le code que je utilise pour attacher l'image:
img = "logo.png"
img_data = open(img, "rb").read()
image = MIMEImage(img_data, name = os.path.basename(img))
msg.attach(image)
Vous devez afficher les en-têtes réels qui apparaissent dans le message que vous recevez. Si vous l'envoyez à quelqu'un sur une plate-forme différente, le logo apparaît-il? Si vous l'envoyez sur un autre compte sur la même plate-forme, le logo apparaît-il? Juste pour être prudent, essayez de fermer le fichier ** après ** le message a été envoyé ('s.sendmail (nom d'utilisateur, adresse, msg.as_string()); fp.close()') – sabbahillel
Je viens d'éditer le code pour montrer une approche différente que j'essaie, mais toujours pas de chance. Et si vous parlez des en-têtes comme dans le courriel, il n'y a pas de pièce jointe. – SVill
Vous devriez montrer les en-têtes réels que vous recevez dans votre question. Vérifiez également le courrier reçu par un autre compte ou une plate-forme différente. – sabbahillel