Làm cách nào để tự động hóa Gmail bằng Python?

Đây là một chủ đề rất thú vị về triển khai thuần túy của mạng máy tính. Ở đây chúng ta thấy cách chúng ta sử dụng các lớp mạng máy tính khác nhau để liên lạc bằng các giao thức khác nhau như HTTP, TCP/IP, UDP, v.v. Ở đây chúng tôi sẽ áp dụng giao thức SMTP để gửi nội dung như dữ liệu động, PDF, áp phích, hình ảnh, v.v. , sử dụng kiến ​​trúc máy chủ khách hàng

Ở đây chúng ta thấy vai trò, trách nhiệm và đặc điểm của tất cả các lớp, như dữ liệu bit để chuyển đổi tín hiệu, phát hiện lỗi, định tuyến, đồng bộ hóa, giải mã mã hóa, v.v.

Bây giờ tin nhắn của chúng tôi chuyển sang lớp mạng. Ở đó, chúng tôi sử dụng các khái niệm về định tuyến và phân mảnh thông điệp của mình thành các gói dữ liệu nhỏ, sau đó được gửi đến lớp liên kết dữ liệu. Ở đây chúng tôi kiểm tra sửa lỗi và lấy địa chỉ Mac của thiết bị và các chi tiết khác. Cuối cùng nó được gửi đến lớp vật lý. Ở đây, chúng tôi sử dụng phương tiện có hướng dẫn hoặc không có hướng dẫn để gửi thông điệp của mình đến người nhận. Đối với phương tiện được hướng dẫn, chúng tôi sử dụng mạng có dây và đối với phương tiện không được hướng dẫn, chúng tôi sử dụng mạng không dây. Chúng tôi làm tương tự cho đầu thu, từ dưới lên trên.
Bây giờ chúng ta thấy một số giao thức mà chúng ta sử dụng trong việc gửi email bằng Python.

SMTP

SMTP được sử dụng để gửi thư đến bất kỳ người dùng nào từ máy chủ. Ở đây chúng tôi thường gửi mã ASCII bảy bit.
Lệnh SMTP

  1. HELO VÀ EHLO

  2. THƯ ĐẾN TỪ

  3. RCPT

  4. ĐẶT LẠI

  5. Từ bỏ

Đang tải thư viện và tạo kết nối

Ở bước này chúng ta tạo kết nối giữa 2 bên gửi và nhận. Đối với điều này, chúng ta phải biết tên máy chủ SMTP, địa chỉ cổng và ID thư của người gửi và người nhận

1
2
3
4
5
6
7
8
9
10
import smtplib
sever_name = ”smtp.gmail.com”
port = 465
server = smtplib.SMTP_SSL[server_name, port]
senders_emailid = ”senderid @gmail.com”
receivers_emailid = ”receivers @gmail.com”
message_content = ”Hello How are you!”
  password = ”xxxxxxxx”
server.login[sender_emailid, password]
server.sendmail[senders_emailid, receivers_emailid, message_content]

Ở trên, chúng ta có thể thấy cách đơn giản để gửi thư tới bất kỳ ID Gmail nào. Nếu bạn đang sử dụng tài khoản Gmail, bạn phải tắt xác minh hai yếu tố, nếu không nó sẽ báo lỗi.
Nếu bạn muốn gửi thư ở dạng tiêu đề, nội dung, chủ đề hoặc đính kèm các tệp như PDF hoặc hình ảnh, bạn sẽ sử dụng thêm một số tập lệnh Python và nhiều thư viện Python hơn cho việc đó.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import smtplib
import os
import imghdr
from email.message
import EmailMessage

EMAIL_ADDRESS = ”senderid @gmail.com”
EMAIL_PASSWORD = ”xxxxxxxx”
msg = EmailMessage[]
msg['Subject'] = 'Lets us Learn The smtp protocol'
msg['From'] = EMAIL_ADDRESS
msg['To'] = ”receivers @gmail.com”
msg.set_content['How about dinner at 6pm this saturday']
with open['image.jpg', 'rb'] as f:
  file_data = f.read[]
file_type = imghdr.what[f.name]
file_name = f.name

msg.add_attchment[file_data, maintype = 'image', subtype = file_type, filename = file_name]
with smtplib.SMTP_SSL['smtp.gmail.com', 465] as smtp:
  smtp.login[EMAIL_ADDRESS, EMAIL_PASSWORD]
smtp.send_message[msg]

Gửi dữ liệu động HTML bằng SMTP

Ở trên, chúng ta thấy dữ liệu tĩnh và đơn giản được gửi qua email bằng giao thức SMTP như thế nào. Bây giờ chúng ta sẽ thấy dữ liệu HTML và động của mình được gửi qua thư bằng cách sử dụng các tập lệnh HTML và CSS của 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 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 = '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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import smtplib
import os
import imghdr
from email.message
import EmailMessage

EMAIL_ADDRESS = ”senderid @gmail.com”
EMAIL_PASSWORD = ”xxxxxxxx”
msg = EmailMessage[]
msg['Subject'] = 'Lets us Learn The smtp protocol'
msg['From'] = EMAIL_ADDRESS
msg['To'] = ”receivers @gmail.com”
msg.set_content['How about dinner at 6pm this saturday']
with open['image.jpg', 'rb'] as f:
  file_data = f.read[]
file_type = imghdr.what[f.name]
file_name = f.name

msg.add_attchment[file_data, maintype = 'image', subtype = file_type, filename = file_name]
with smtplib.SMTP_SSL['smtp.gmail.com', 465] as smtp:
  smtp.login[EMAIL_ADDRESS, EMAIL_PASSWORD]
smtp.send_message[msg]
0

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import smtplib
import os
import imghdr
from email.message
import EmailMessage

EMAIL_ADDRESS = ”senderid @gmail.com”
EMAIL_PASSWORD = ”xxxxxxxx”
msg = EmailMessage[]
msg['Subject'] = 'Lets us Learn The smtp protocol'
msg['From'] = EMAIL_ADDRESS
msg['To'] = ”receivers @gmail.com”
msg.set_content['How about dinner at 6pm this saturday']
with open['image.jpg', 'rb'] as f:
  file_data = f.read[]
file_type = imghdr.what[f.name]
file_name = f.name

msg.add_attchment[file_data, maintype = 'image', subtype = file_type, filename = file_name]
with smtplib.SMTP_SSL['smtp.gmail.com', 465] as smtp:
  smtp.login[EMAIL_ADDRESS, EMAIL_PASSWORD]
smtp.send_message[msg]
1

Đầ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

Bạn có thể tự động hóa email bằng Python không?

Gửi email theo cách thủ công là một công việc tốn nhiều thời gian và dễ xảy ra lỗi, nhưng có thể dễ dàng tự động hóa bằng Python . Trong hướng dẫn này, bạn sẽ học cách. Thiết lập kết nối an toàn bằng SMTP_SSL[] và.

Tôi có thể Tự động hóa email trong Gmail không?

Bạn có thể lên lịch gửi email sau đó . Email đã lên lịch có thể được gửi vài phút sau thời gian đã lên lịch. Quan trọng. Email của bạn sẽ được gửi dựa trên múi giờ bạn lên lịch cho chúng.

Làm cách nào để kết nối Gmail với Python?

Đối với mã Python thực tế, tất cả những gì bạn cần làm là gọi phương thức đăng nhập. nhập smtplib gmail_user = 'you@gmail. com' gmail_password = 'P@ssword. ' thử. máy chủ = smtplib. SMTP_SSL['smtp. gmail. com', 465] máy chủ.

Làm cách nào để gửi email bằng Gmail API Python?

Có hai cách để gửi email bằng Gmail API. .
Bạn có thể gửi nó trực tiếp bằng tin nhắn. phương thức gửi
Bạn có thể gửi nó từ bản nháp, sử dụng bản nháp. phương thức gửi

Chủ Đề