簡體   English   中英

使用正文的 csv 數據使用 python 發送電子郵件

[英]Sending an email with python using csv data for the body

我正在使用 csv 庫將數據提取到電子郵件正文中。 我正在從身體的 csv 中提取某些列。 我正在使用垃圾 Gmail 帳戶進行測試。 我只是對如何使用 for 循環感到困惑。 如果我是對的,你需要一個 for 循環來讀取行然后一個 for 循環來發送電子郵件。 我確實閱讀了Read and Writing CSV Files,但不確定如何使用 smtplib 實現它。

import csv, smtplib, ssl

message = """Subject: Your Title

{supervisor} {title} {start}"""

from_address = "test@gmail.com"
password = input("Type your password and press enter: ")

context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
    server.login(from_address, password)
    with open('test.csv','rb') as file:
        reader = csv.reader(file, delimiter=',')
        next(reader)

            #start = []
            #title = []
            #supervisor = []

            for row in reader:
                title = row[3]
                start = row[0]
                supervisor = row[4]

            for supervisor, title, start in reader:
                 server.sendmail(
                    from_address,
                     Email,
                     message.format(supervisor=supervisor, start=start, title=title)
                 )

print('Emails were sent successfully!')  

CSV 文件:

StartDate,Employee Name,PC,Title,Supervisor Name,email 
12/9/2019,Katti M. Ricke,289,Recruiter,Courtney Clark,test@gmail.com

可能如果你使用 pandas 來處理 csv 可能會更容易..for install pandas just pip install pandas

import pandas as pd
import io
import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# read csv using pandas and then convert the csv to html string ....this code later will add into body
str_io = io.StringIO()
df = pd.read_csv('test.csv')
df.to_html(buf=str_io)
table_html = str_io.getvalue()
print(table_html)


sender_email = "mymail@gmail.com"
receiver_email = "anothermail@gmail.com"
password = "mypass"

message = MIMEMultipart("alternative")
message["Subject"] = "Subject: Your Title"
message["From"] = sender_email
message["To"] = receiver_email

text = """\
Subject: Your Title"""

html = """\
<html>
  <body>
    <p>{table_html}</p>
  </body>
</html>
""".format(table_html=table_html)

part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)

# Send email
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(
        sender_email, receiver_email, message.as_string()
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM