I fixed something. Now the images are attached. But I can not include them in the html body of the email.
I attach as always my code. I would like to thank you in advance
import smtplib
import mimetypes
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import oracledb
import pandas as pd
import sqlalchemy
import smtplib
import matplotlib
image_path="C:\\Users\\n.restaino\\PycharmProjects\\pythonProject\\.venv\\barchart1.png"
if __name__ == "__main__":
# Connection details
user = 'a'
pw = 'a'
host = 'SRV-1'
port = '1521'
db = '2'
engine = sqlalchemy.create_engine('oracle+cx_oracle://' + user + ':' + pw + '@' + host + ':' + port + '/?service_name=' + db)
my_query='SELECT tc10_clfo tipo, count(*) numero FROM T_C10 GROUP BY tc10_clfo'
df = pd.read_sql(my_query, engine)
ax = df.plot.bar(x='tipo', y='numero', rot=0)
fig = ax.get_figure()
fig.savefig(image_path)
email_user = '[email protected]'
password_user = '1234 5678 9012 3456'
email_send = '[email protected]'
subject = 'Python'
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject
body = f"""<h1> Sales Report </h1> {df.to_html()}
<image src="cid:'image'"/>
"""
msg.attach(MIMEText(body,'html'))
msgRoot = MIMEMultipart('mixed')
msgAlternative = MIMEMultipart('mixed')
fp='C:\\Users\\n.restaino\\PycharmProjects\\pythonProject\\.venv\\barchart1.png'
attachment =open(fp,'rb')
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+fp, cid='image')
msg.attach(part)
fp='C:\\Users\\n.restaino\\PycharmProjects\\pythonProject\\.venv\\barchart1 - Copia.png'
attachment =open(fp,'rb')
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+fp)
msg.attach(part)
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+fp)
msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_user, password_user)
server.sendmail(email_user,email_send,text)
server.quit