簡體   English   中英

如何使用 Python 將單獨的 PDF 附加到聯系人列表 email 地址?

[英]How do I attach separate PDF's to contact list email addresses using Python?

我編寫了一個腳本,用於向 Excel 表中的所有聯系人發送單獨的電子郵件。 該表如下所示:

Names Emails             PDF
Name1 Email1@email.com   PDF1.pdf 
Name2 Email2@email.com   PDF2.pdf

我到目前為止的代碼如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from string import Template

import pandas as pd

e = pd.read_excel("Contacts.xlsx")

emails = e['Email'].values
PDF = e['PDF'].values
print(emails, PDF)

server = smtplib.SMTP(host='smtp.outlook.com', port=587) 
server.starttls()
server.login('sender_email','sender_password')

msg = ("""
Hi there

Test message

Thankyou
""")

subject = "Send emails with attachment"

body = "Subject: {}\n\n{}".format(subject,msg)   
for emails in emails:
    server.sendmail('sender_email',emails,body)

print("Emails sent successfully")

server.quit()

問題:如何查找每個電子郵件地址(第 2 列)的正確附件(第 3 列)並使用 Python 將其附加到 email?

我做了一些更改,並確保 pdf 字段具有 pdf 路徑編輯:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from string import Template
import pandas as pd

#e = pd.read_csv("Contacts.csv")
e = pd.read_excel("Contacts.xlsx")
server = smtplib.SMTP(host='smtp.outlook.com', port=587)
server.starttls()
server.login('yourmail@mail.com','yourpass')

body = ("""
Hi there

Test message

Thankyou
""")
subject = "Send emails with attachment"
fromaddr='yourmail@mail.com'
#body = "Subject: {}\n\n{}".format(subject,msg)
#Emails,PDF
for index, row in e.iterrows():
    print (row["Emails"]+row["PDF"])
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))
    filename = row["PDF"]
    toaddr = row["Emails"]
    attachment = open(row["PDF"], "rb")
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
    msg.attach(part)
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)
    #server.sendmail('sender_email',emails,body)

print("Emails sent successfully")

server.quit()

暫無
暫無

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

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