Gửi DataFrame trong email triển vọng python

Trong các kịch bản dữ liệu lớn, Tự động hóa email là giai đoạn quan trọng nhất sau bất kỳ đường dẫn dữ liệu lớn nào để gửi nhật ký, tệp lỗi, tập kết quả tới các bên liên quan trong doanh nghiệp để họ phân tích dữ liệu. Nó cho phép bạn nâng cao chức năng email của mình mà không cần gửi từng email riêng lẻ theo cách thủ công bất cứ khi nào một tác vụ trong đường dẫn dữ liệu lớn chạy hoặc không thành công. Sử dụng email tự động trong chiến dịch email của bạn giúp tăng mức độ tương tác và cung cấp trải nghiệm email phù hợp hơn cho người nhận của bạn. Ví dụ: một người có thể gửi email có tệp nhật ký, tập kết quả, dữ liệu xác thực cho các thành viên khác trong nhóm bằng chức năng email trong python

Yêu cầu hệ thống

  • Cài đặt mô-đun python như sau
  • pip install pyzmail36
  • pip install smtplib
  • pip install pandas
  • pip install imapclient
  • Các mã dưới đây có thể được chạy trong sổ ghi chép Jupyter hoặc bất kỳ bảng điều khiển python nào

Bước 1. Kết nối với Gmail và đăng nhập

  • Trước khi sử dụng Python để truy cập email của bạn, chúng tôi cần thay đổi cài đặt tài khoản google của mình để cho phép truy cập vào các ứng dụng kém an toàn hơn
  • Nếu không, Google sẽ không thể cấp quyền truy cập vào mã của bạn để đăng nhập vào tài khoản gmail. Bây giờ, vì lý do bảo mật, chúng tôi khuyên bạn nên thay đổi cài đặt này về trạng thái mặc định sau khi bạn chạy mã xong

Connecting to the Gmail and logging in Less secure app access

  • Bật Cho phép các ứng dụng kém an toàn hơn thành BẬT. Xin lưu ý rằng điều này giúp người khác dễ dàng truy cập vào tài khoản của bạn hơn. Trong danh mục "Bảo mật", tìm "Truy cập ứng dụng kém an toàn hơn" và bật tính năng này
  • Python cung cấp mô-đun smtplib, mô-đun này xác định đối tượng phiên máy khách SMTP có thể được sử dụng để gửi thư đến bất kỳ máy Internet nào có trình nền trình nghe SMTP hoặc ESMTP
  • SMTP là viết tắt của Giao thức chuyển thư đơn giản
  • Mô-đun smtplib rất hữu ích để giao tiếp với các máy chủ thư để gửi thư

Bước 2. Gửi Email văn bản thuần túy thông qua Mã

import smtplib, ssl port = 587 # For starttls smtp_server = "smtp.gmail.com" sender_email = "[email protected]" receiver_email = "[email protected]" password = input("Type your password and press enter:") message = """\ Subject: Hi there Im sending an email through python code.""" context = ssl.create_default_context() with smtplib.SMTP(smtp_server, port) as server: server.ehlo() server.starttls(context=context) server.ehlo() server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message)

Đầu ra của mã trên

Bước 3. Gửi Email có tệp đính kèm thông qua Mã

  • Gói email của Python chứa nhiều lớp và chức năng để soạn và phân tích cú pháp email, phần này chỉ đề cập đến một nhóm nhỏ hữu ích cho việc gửi email
  • Có khá nhiều cách để đính kèm tệp vào email, nhưng đây là một trong những cách đơn giản hơn. Lần này chúng tôi sẽ sử dụng bộ mã hóa và MIMEMultipart từ mô-đun email và hệ điều hành. đường dẫn để chỉ cần lấy tên tệp từ đường dẫn được cung cấp
  • Phương pháp này hỗ trợ các tệp văn bản, hình ảnh, video, âm thanh và 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 import os.path email = '[email protected]' password = '***********' send_to_email = '[email protected]' subject = 'Sending Email with an attachment' message = 'Please find the attachment to email, thanks' file_location = 'C:\\Users\\DELL E7440\\Desktop\\pyspark - Copy.txt' msg = MIMEMultipart() msg['From'] = email msg['To'] = send_to_email msg['Subject'] = subject msg.attach(MIMEText(message, 'plain')) # Setup the attachment filename = os.path.basename(file_location) attachment = open(file_location, "rb") part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', "attachment; filename= %s" % filename) # Attach the attachment to the MIMEMultipart object msg.attach(part) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(email, password) text = msg.as_string() server.sendmail(email, send_to_email, text) server.quit()

Đầu ra của mã trên

Thư viện Pyzmail

  • pyzmail là một thư viện thư cấp cao
  • Nó cung cấp các hàm và lớp giúp phân tích cú pháp, soạn và gửi email. pyzmail che giấu những khó khăn trong việc quản lý cấu trúc MIME và mã hóa/giải mã cho các email được quốc tế hóa

Để cài đặt

pip install pyzmail36

Đang kết nối với imap_server

import imapclient import smtplib import datetime import pyzmail imap_server = 'imap.gmail.com' smtp_server = 'smtp.gmail.com' username = '******@gmail.com' password = '******' imapobj = imapclient.IMAPClient(imap_server, ssl=True) imapobj.login(username, password) smtpobj = smtplib.SMTP(smtp_server, 587) smtpobj.ehlo() smtpobj.starttls() smtpobj.login(username, password)

Tìm kiếm và truy xuất email

________số 8

Bước 4. Viết chi tiết email hộp thư đến vào csv bằng thư viện pyzmail

import pyzmail import csv with open('emaildata.csv', 'a', newline='', encoding='utf-8') as mycsvFile: for i in range(len(UIDs)): raw_message = imapobj.fetch(UIDs[i], ['BODY[]']) message = pyzmail.PyzMessage.factory(raw_message[UIDs[i]][b'BODY[]']) email_sub = message.get_subject() email_from = message.get_addresses('from') email_to = message.get_addresses('to') mail_date = message.get_decoded_header('date') mail_date = mail_date.split("<")[0].replace('"', '') for eid in UIDs: mycsvFileWriter = csv.writer(mycsvFile) data = [eid, mail_date, email_from[0][0], email_from[0][1],email_to[0][1], email_sub] mycsvFileWriter.writerow(data) print('done')

Đầu ra của đoạn mã trên

Nó sẽ tạo một tệp csv với Id email, từ email, to-email và dữ liệu chủ đề và nó sẽ ghi tệp csv vào vị trí hiện tại nơi python đang được chạy

Đọc tệp csv được viết ở bước trên và sử dụng pandas in 5 dòng đầu tiên

pip install smtplib0

Đầu ra của mã trên

Thêm tên cột vào khung dữ liệu mà chúng tôi đã tạo từ tệp csv

pip install smtplib1

Đầu ra của mã trên. Sau khi thêm các cột in 5 dòng đầu tiên

Lấy các email duy nhất của người gửi và tạo một khung dữ liệu khác từ tệp csv

pip install smtplib2

Sau khi tạo khung dữ liệu email duy nhất, hãy ghi và mã hóa khung dữ liệu thành tệp csv vào e-mail bằng gấu trúc