如何用Python实现电子邮件的自动化

开发 后端 自动化
在本文中,我们将概述如何编写一个Python脚本,该脚本可以下载一组特定的公共数据,然后将其上传到电子邮件中,并将其发送给任何需要的人。

前言

用Python自动化日常任务很容易。通过api和库的结合,您可以轻松地设置系统来抓取网站、发送电子邮件、管理数据和分析。

在本文中,我们将概述如何编写一个Python脚本,该脚本可以下载一组特定的公共数据,然后将其上传到电子邮件中,并将其发送给任何需要的人。

这将使您熟悉使用Python请求库和Gmail API。因此,如果您希望将来使用Python自动处理电子邮件,这是一个很好的学习起点。

用Python下载文件

对于第一步,我们将需要使用HTTP请求实际下载数据文件。

在本例中,我们将要下载的文件甚至在下面的链接中有一个简单的端点。因此,您不需要使用Selenium这样的库来尝试单击下载按钮。通常,如果有一个URL,那么使用链接下载就非常容易。

https://data.medicaid.gov/api/views/u72p-j37s/rows.json?accessType=DOWNLOAD

这个文件提供关于医疗补助和个人登记的信息。这对医疗保健提供者来说是有价值的,他们可以将其与内部数据联系起来,帮助更好地了解他们的市场。

为了下载它,我们将使用函数requests.get()。这将允许我们使用HTTP请求将数据拉到我们指定的URL。

例如,你可以看看下面的脚本:

  1. # Part 1: Fetch the data.​ 
  2.  
  3. # Get the webpage, store it in a Response object and assign the text 
  4. # About: https://requests.readthedocs.io/en/master/api/#requests.Response​ 
  5.  
  6. # This URL contains the .csv download of 
  7. 'https://catalog.data.gov/dataset/' \ 
  8. #  'share-of-medicaid-enrollees-in-managed-care' 
  9. # used to send to the destination e-mail. 
  10.  
  11. csvFileURL = 'https://data.medicaid.gov/api/' \  'views/u72p-j37s/rows
  12. csv?accessType=DOWNLOAD'csvFileRequest = requests.get(csvFileURL)csvFile = csvFileRequest.content 

它短小精悍,并将返回CSV作为您现在设置为变量的请求的一部分。我们稍后在创建电子邮件时将使用这个。但是接下来,我们需要设置Gmail API的凭据。

设置您的Gmail API

谷歌使您非常容易地设置api。您可以转到谷歌API控制台。从这里,您可以选择ENABLE API和服务,然后搜索Gmail API。

API控制台如下图所示。

 

如何用Python实现电子邮件的自动化

你可以输入Gmail,它应该是唯一出现的。

 

如何用Python实现电子邮件的自动化

然后您可以选择Gmail API,它旁边会有一个ENABLE按钮。

 

如何用Python实现电子邮件的自动化

一旦您在Gmail API上单击ENABLE,您就可以下载您的凭证或者使用API密钥和密钥。

我们的代码将使用JSON下载,但如果您愿意,可以将其转换为pickle。

 

如何用Python实现电子邮件的自动化

有了这些设置,我们现在可以开始建立你的功能设置,然后自动发送你的电子邮件。

使用Gmail API 发送邮件

现在我们已经找到了一种获取数据的方法,我们需要弄清楚如何发送电子邮件。

为了做到这一点,我们将使用电子邮件库。这个库可以让我们设置电子邮件的各个部分:发件人、收件人、主题等。

我们在电子邮件中使用MIMEBase类来实现这一点,这使得设置正确的数据点变得很容易,并且为将来使用的Gmail API提供了一个简单的类。

使用MIMEBase类真的很简单,因为你可以创建一个新的类,然后引用很多需要的组件,比如:

  1. message[‘from’] = test@gmail.com 

您可以看到我们在下面设置这些参数的整个函数。

  1. Function required for Part 2: Send e-mail with Google API. 
  2. # a) Create the message 
  3.  
  4. def create_message(sender, to, subject, csv):   
  5. #message = MIMEMultipart()   
  6.     message = MIMEMultipart() 
  7.   message['from'] = sender 
  8.   message['to'] = to   
  9.   message['subject'] = subject 
  10.  
  11. # Send the time it was updated as the body of the e-mail   
  12. dt_object = datetime.utcnow() - timedelta(hours = 7)   
  13. msg = MIMEText('Hi! Your file was updated.' \    '\nTime of update: ' + dt_object.strftime('%m/%d/%Y, %I:%M:%S %p') \    + ' (Los Angeles Time)')​   
  14. message.attach(msg) 
  15.  
  16. # Attach the .csv file   
  17. record = MIMEBase('application''octet-stream')   
  18. # print(csv)   
  19. record.set_payload(csv)   
  20. encoders.encode_base64(record)   
  21. record.add_header('Content-Disposition''attachment', filename='medicare.csv')   
  22. message.attach(record) 
  23.  
  24. Return the message   
  25. raw = base64.urlsafe_b64encode(message.as_bytes())   
  26. raw = raw.decode()   
  27. return {'raw': raw} 

您将注意到在最后,我们使用了函数urlsafe_b64encode。这将把消息设置为字节。这将用于轻松地将电子邮件数据传输到Gmail API。所以它很容易传递。

现在是时候发送你的第一封自动邮件了。​现在您已经设置了Gmail API凭据,我们可以发送第一封电子邮件了。我们将使用使用Gmail API和凭据设置的服务变量。这如下面的函数send_message所示。

  1. #b) Send the message 
  2.  
  3. def send_message(service, user_id, message):   
  4.     try:    message = service.users().messages(). \    
  5.     send(userId=user_id, body=message).execute()     
  6.    print('Message Id: %s' % message['id'])     
  7.    return message   
  8.  except Exception as e:     
  9.   print('An error occurred: %s' % e)     
  10.   return None 

从这里开始,我们需要做的就是传递消息并执行。至此,我们已经发送了第一封电子邮件。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2018-08-24 08:10:10

编程语言Python电子邮件

2019-08-08 14:55:19

电子邮件微软信头

2019-06-26 18:30:30

Linux命令行电子邮件

2018-08-31 09:55:38

Ansible网络自动化

2020-01-06 09:00:34

容器CRD安全

2018-09-05 14:45:10

Python自动化机器学习

2023-03-09 14:02:00

Inkscape图形创作

2010-09-17 14:11:18

2021-06-16 10:56:32

电子邮件电子邮件攻击BEC

2011-10-31 09:35:50

2021-06-28 21:21:54

电子邮件邮件安全恶意软件

2010-10-21 13:54:20

2011-08-01 11:11:55

2010-12-27 16:22:27

邮件地址

2022-04-29 15:55:51

安全电子邮件病毒

2020-03-18 09:23:24

Python数据SQL

2024-01-03 10:12:41

自动化测试

2011-12-15 10:45:33

2022-10-28 10:03:47

物联网楼宇自动化

2009-05-21 10:07:43

谷歌电子邮件自动翻译
点赞
收藏

51CTO技术栈公众号