Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ส่งอีเมลพร้อมไฟล์แนบจากบัญชี Gmail ของคุณโดยใช้ Python


ในบทความนี้ เราจะมาดูกันว่าเราสามารถส่งอีเมลพร้อมไฟล์แนบโดยใช้ Python ได้อย่างไร ในการส่งจดหมาย เราไม่จำเป็นต้องมีห้องสมุดภายนอก มีโมดูลที่เรียกว่า SMTPlib ซึ่งมาพร้อมกับ Python ใช้ SMTP (Simple Mail Transfer Protocol) เพื่อส่งจดหมาย มันสร้างวัตถุเซสชันไคลเอนต์ SMTP สำหรับการส่งจดหมาย

SMTP ต้องการรหัสอีเมลต้นทางและปลายทางที่ถูกต้อง และหมายเลขพอร์ต หมายเลขพอร์ตแตกต่างกันไปตามไซต์ต่างๆ ตัวอย่างเช่น สำหรับ google พอร์ตคือ 587 .

ขั้นแรกเราต้องนำเข้าโมดูลเพื่อส่งจดหมาย

import smtplib

นอกจากนี้ เรายังใช้โมดูล MIME (Multipurpose Internet Mail Extension) เพื่อให้มีความยืดหยุ่นมากขึ้น การใช้ส่วนหัว MIME ทำให้เราจัดเก็บข้อมูลผู้ส่งและผู้รับ ตลอดจนรายละเอียดอื่นๆ ได้ จำเป็นต้องมี MIME เพื่อตั้งค่าไฟล์แนบกับอีเมล

เรากำลังใช้บริการ Gmail ของ Google เพื่อส่งอีเมล ดังนั้นเราจึงต้องการการตั้งค่าบางอย่าง (ถ้าจำเป็น) เพื่อความปลอดภัยของ Google หากไม่ได้ตั้งค่าเหล่านั้น รหัสต่อไปนี้อาจไม่ทำงาน หาก Google ไม่รองรับการเข้าถึงจากแอปของบุคคลที่สาม

เพื่อให้เข้าถึงได้ เราต้องตั้งค่า "การเข้าถึงแอปที่ปลอดภัยน้อยกว่า" ในบัญชี Google หากเปิดการยืนยันสองขั้นตอน เราจะใช้การเข้าถึงที่มีความปลอดภัยน้อยกว่าไม่ได้

ในการตั้งค่านี้ให้เสร็จสิ้น ให้ไปที่คอนโซลผู้ดูแลระบบของ Google และค้นหาการตั้งค่าแอปที่มีความปลอดภัยน้อย

ส่งอีเมลพร้อมไฟล์แนบจากบัญชี Gmail ของคุณโดยใช้ Python

ขั้นตอนในการส่งเมลพร้อมไฟล์แนบโดยใช้ SMTP (smtplib)

  • สร้าง MIME
  • เพิ่มผู้ส่ง ที่อยู่ผู้รับลงใน MIME
  • เพิ่มชื่อเมลลงใน MIME
  • แนบร่างกับ MIME
  • เปิดไฟล์เป็นโหมดไบนารีซึ่งจะแนบไปกับเมล
  • อ่านไบต์สตรีมและเข้ารหัสไฟล์แนบโดยใช้รูปแบบการเข้ารหัส base64
  • เพิ่มส่วนหัวของไฟล์แนบ
  • เริ่มเซสชัน SMTP ด้วยหมายเลขพอร์ตที่ถูกต้องพร้อมคุณสมบัติความปลอดภัยที่เหมาะสม
  • เข้าสู่ระบบ
  • ส่งจดหมายและออก

โค้ดตัวอย่าง

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
mail_content = '''Hello,
This is a test mail.
In this mail we are sending some attachments.
The mail is sent using Python SMTP library.
Thank You
'''
#The mail addresses and password
sender_address = '[email protected]'
sender_pass = 'xxxxxxxx'
receiver_address = '[email protected]'
#Setup the MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.'
#The subject line
#The body and the attachments for the mail
message.attach(MIMEText(mail_content, 'plain'))
attach_file_name = 'TP_python_prev.pdf'
attach_file = open(attach_file_name, 'rb') # Open the file as binary mode
payload = MIMEBase('application', 'octate-stream')
payload.set_payload((attach_file).read())
encoders.encode_base64(payload) #encode the attachment
#add payload header with filename
payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)
message.attach(payload)
#Create SMTP session for sending the mail
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
session.starttls() #enable security
session.login(sender_address, sender_pass) #login with mail_id and password
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('Mail Sent')

ผลลัพธ์

D:\Python TP\Python 450\linux>python 327.Send_Mail.py
Mail Sent

ส่งอีเมลพร้อมไฟล์แนบจากบัญชี Gmail ของคุณโดยใช้ Python