python - 有没有办法发送带有数据框附件的电子邮件?
问题描述
我目前有一个使用熊猫操作 .csv 文件的脚本。我正在尝试发送带有已修改文件的最新 .csv 版本的 MIMEMultipart 电子邮件,但由于某种原因,电子邮件收件人不断收到我尝试发送的较旧的未更改版本的 .csv。我试图在脑海中理解它,因为 .csv 文件的旧版本在发送之前已被覆盖,但 .csv 的原始版本已发送给收件人。
也许我需要为 smtplib 指定一个路径来获取文件,而不是仅仅给出文件的名称。有没有办法做到这一点,或者有没有其他方法可以解决我的问题?我已经尝试将名称更改为其他名称,以便 smtplib 能够区分旧的 .csv 和新的。
这不起作用,因为文件放在目录中,但我的脚本说新文件不存在
这是我当前的代码:
email_user = 'Bot@gmail.com'
email_password = 'Business101'
email_send = ('myemail@gmail.com', 'myfriendsemail@gmail.com')
subject = 'TOP 5 CONTRACTS'
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = ",".join(email_send)
msg['Subject'] = subject
body = 'These are the latest contracts for this week!'
msg.attach(MIMEText(body,'plain'))
filename='CC.csv'
attachment =open(filename,'rb')
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+filename)
msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_user,email_password)
server.sendmail(email_user,email_send,text)
server.quit()
print("Emailed Recipients")
可能值得一提的是,这个过程是一个自动化的过程,因此脚本是从我的 mac 上的 Unix 可执行文件运行的。
如果您能提供帮助,我将不胜感激!
解决方案
这是最好的方法,谢谢
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from smtplib import SMTP
import smtplib
import sys
import pandas as pd
df_test = pd.read_csv('/Users/emmanuelafoke/Documents/Selenium/CC.csv')
email_user = 'myemailaddress@gmail.com'
email_password = 'mypassword'
recipients = ['theiremailaddress@gmail.com']
emaillist = [elem.strip().split(',') for elem in recipients]
msg = MIMEMultipart()
msg['Subject'] = 'SUBJECT'
msg['From'] = 'myemailaddress@gmail.com'
html = """\
<html>
<head></head>
<body>
{0}
</body>
</html>
""".format(df_test.to_html())
part1 = MIMEText(html, 'html')
msg.attach(part1)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email_user,email_password)
server.sendmail(msg['From'], emaillist , msg.as_string())
感谢您所有的帮助!
推荐阅读
- powershell - 如何验证 JSON 作为 Power shell 中字符串参数的键
- arrays - 怎么做
- python - Python 中的 Stack DataStructure 参考问题
- xml - 使用 xmllint --xpath 提取嵌套属性值
- reactjs - 在来自 github 的 react 项目上运行 npm install 时出现 npm err code 1
- python - OpenSesame:如何引用内联脚本之外的变量?
- mysql - 检索值并从嵌套 Json 格式的表库中对它们求和 - SQL
- java - 如何在安卓中使用(RSA/ECB/PKCS1Padding)
- javascript - 如何在 React 中使用 Tailwind CSS 来配置 Create React App?
- javascript - 如何定义一个可以有多种形式的javascript属性?