当前位置: 首页 > 科技观察

如何使用Python自动化电子邮件

时间:2023-03-14 13:09:15 科技观察

前言使用Python自动化日常任务很容易。结合使用API和库,您可以轻松设置系统以抓取网站、发送电子邮件、管理数据和分析。在本文中,我们将概述如何编写一个Python脚本,该脚本可以下载一组特定的公共数据,将其上传到电子邮件,并将其发送给任何需要它的人。这将使您熟悉使用Python请求库和GmailAPI。所以如果你想在未来使用Python自动化你的电子邮件,这是一个很好的起点。使用Python下载文件第一步,我们需要使用HTTP请求实际下载数据文件。在这个例子中,我们要下载的文件甚至在下面的链接中有一个简单的端点。所以你不需要使用像Selenium这样的库来尝试点击下载按钮。通常,如果有URL,使用链接下载是非常容易的。https://data.medicaid.gov/api/views/u72p-j37s/rows.json?accessType=DOWNLOAD本文档提供有关Medicaid和个人注册的信息。这对医疗保健提供者很有价值,他们可以将其与内部数据联系起来,以帮助更好地了解他们的市场。为了下载它,我们将使用函数requests.get()。这将允许我们使用HTTP请求将数据提取到我们指定的URL。例如,您可以查看以下脚本:#Part1:Fetchthedata.#Getthewebpage,storeitinaResponseobjectandassignthetext#About:https://requests.readthedocs.io/en/master/api/#requests.Response#ThisURLcontainsthe.csvdownloadof#'https://catalog.data.gov/dataset/'\#'share-of-medicaid-enrollees-in-managed-care'#usedtosendtothedestinatione-mail.csvFileURL='https://data.medicaid.gov/api/'\'views/u72p-j37s/rows.csv?accessType=DOWNLOAD'csvFileRequest=requests.get(csvFileURL)csvFile=csvFileRequest.content它简短而贴心,将返回CSV作为您现在设置为的请求的一部分一个变量。稍后我们将在创建电子邮件时使用它。但接下来,我们需要为GmailAPI设置凭据。设置您的GmailAPIGoogle使您的API设置变得非常容易。你可以去谷歌API控制台。从这里,您可以选择启用API和服务,然后搜索GmailAPI。API控制台如下图所示。您可以输入Gmail,它应该是唯一出现的。然后你可以选择GmailAPI,它旁边会有一个ENABLE按钮。在GmailAPI上单击“启用”后,您可以下载您的凭据或使用API密钥和机密。我们的代码将使用JSON下载,但如果您愿意,可以将其转换为pickle。有了这些设置,我们现在可以开始构建您的功能集,然后自动发送您的电子邮件。使用GmailAPI发送邮件现在我们已经想出了获取数据的方法,我们需要弄清楚如何发送电子邮件。为此,我们将使用电子邮件库。该库允许我们设置电子邮件的各个部分:发件人、收件人、主题等。我们在电子邮件中使用MIMEBase类来执行此操作,这使得设置正确的数据点变得容易,并提供了一个简单的类以供将来与GmailAPI一起使用。使用MIMEBase类真的很简单,因为你可以创建一个新的类,然后引用很多你需要的组件,比如:message['from']=test@gmail.com你可以在我们设置这些参数的地方看到整个事情下面的功能。#FunctionrequiredforPart2:Sende-mailwithGoogleAPI.#a)Createthemessagedefcreate_message(sender,to,subject,csv):#message=MIMEMultipart()message=MIMEMultipart()message['from']=sendermessage['to']=tomessage['主题']=subject#Sendthetimeitwasupdatedasthebodyofthee-maildt_object=datetime.utcnow()-timedelta(hours=7)msg=MIMEText('嗨!您的文件已更新。'\'\n更新时间:'+dt_object.strftime('%m/%d/%Y,%I:%M:%S%p')\+'(洛杉矶时间)')message.attach(msg)#Attachthe.csvfilerecord=MIMEBase('application','octet-stream')#print(csv)record.set_payload(csv)encoders.encode_base64(record)record.add_header('Content-Disposition','attachment',filename='medicare.csv')message.attach(record)#Returnthemessageraw=base64.urlsafe_b64encode(消息。as_bytes())raw=raw.decode()return{'raw':raw}你会注意到最后,我们使用函数urlsafe_b64encode。这会将消息设置为字节。这将用于轻松地将电子邮件数据传输到GmailAPI。所以很容易传下去。现在是时候发送您的第一封自动电子邮件了。现在您已经设置了GmailAPI凭据,我们可以发送第一封电子邮件了。我们将使用通过GmailAPI和凭据设置的服务变量。这显示在下面的函数send_message中。#b)Sendthemessagedefsend_message(service,user_id,message):try:message=service.users().messages().\send(userId=user_id,body=message).execute()打印('MessageId:%s'%message['id'])returnmessageexceptExceptionase:print('Anerororoccurred:%s'%e)returnNone从这里开始,我们需要做的就是传递消息并执行。此时,我们已经发送了第一封电子邮件。