Код: Выделить всё
email_content = jinja_template.render(msg)
msg.attach(MIMEText(email_content, "html"))
body = f""" Sales Report {df.to_html()}
[img]cid:image1[/img]
`enter code here`
{% include 'path/to/template.html' %}
"""
msg.attach(MIMEText(body,'html'))
< /code>
Пожалуйста, дайте несколько предложений. < /p>
Спасибо < /p>
Да, Не было ясно
Я прикрепляю весь код, который он работает, пока вы не внедряете файл HTML. < /p>
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
import sqlalchemy
import smtplib
from jinja2 import Template
# Read the Jinja2 email template
with open("C:/tmp/plotly_graph.html", "r") as file:
template_str = file.read()
jinja_template = Template(template_str)
import glob
folder_dir="C:\\Users\\n.restaino\\PycharmProjects\\pythonProject\\.venv\\"
image_path="C:\\Users\\n.restaino\\PycharmProjects\\pythonProject\\.venv\\image1.png"
if __name__ == "__main__":
# Connection details
# Connection details
user = 'a'
pw = 'a'
host = '0.0.0.10'
port = '1521'
db = 'a.a.com'
engine = sqlalchemy.create_engine('oracle+cx_oracle://' + user + ':' + pw + '@' + host + ':' + port + '/?service_name=' + db)
my_query="""SELECT sum(FTR_VALORE) val, AN_RAGSOC1 cli FROM fatrig JOIN ancf ON cf_cod=ftr_clfo
WHERE ftr_ese='2025'
GROUP BY AN_RAGSOC1
ORDER BY sum(ftr_valore) desc
FETCH FIRST 20 ROWS ONLY"""
df = pd.read_sql(my_query, engine)
ax = df.plot.bar(x='cli', y='val', rot=60, figsize=(30, 20))
fig = ax.get_figure()
fig.savefig(image_path)
email_user = 'a.b@gmail.com'
password_user = '1111'
email_send = 'b.c@gmail.com'
subject = 'Python'
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject
email_content = jinja_template.render(msg)
msg.attach(MIMEText(email_content, "html"))
body = """ Sales Report {df.to_html()}
[img]cid:image1[/img]
{% include "C:/tmp/plotly_graph.html" %}
"""
msg.attach(MIMEText(body,'html'))
msgRoot = MIMEMultipart('mixed')
msgAlternative = MIMEMultipart('mixed')
i=1
# iterate over files in
# that directory
for images in glob.iglob(f'{folder_dir}/*'):
# check if the image ends with png
if (images.endswith(".png")):
attachment =open(images,'rb')
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+images)
part.add_header('Content-ID', 'image1' )
i = i + 1
msg.attach(part)
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+images)
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()
Заранее
Подробнее здесь: https://stackoverflow.com/questions/794 ... tml-python