Gửi khung dữ liệu dưới dạng tệp đính kèm trong email 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

  • 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 = "xxxxxxxxxx@gmail.com" receiver_email = "xxxxxxxxxcv@gmail.com" 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 email, phần này chỉ bao gồm một tập hợp con 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 = 'your@gmail.com' password = '***********' send_to_email = 'others@gmail.com' 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["

Chủ Đề