ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Python Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Python Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² – ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Python ΠΏΡΠΎΡΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ.
ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ ΠΎΠ±ΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΌΠΈ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ.
- π§Β ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡ Π²ΡΡ ΠΏΠΎΡΡΡ Π½Π° Π²Π½Π΅ΡΠ½ΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ
- ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΠ»ΡΠ· Π½Π° FreeBSD
- postfix: Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΆΡΡΠ½Π°Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pflogsumm
Π‘ΠΊΡΠΈΠΏΡ Python Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ
Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .py
# vi sending_mail.py
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # Email ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ sender_email = "your_email@gmail.com" receiver_email = "recipient_email@example.com" subject = "Subject of the email" body = "Body of the email" # Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ message = MIMEMultipart() message["From"] = sender_email message["To"] = receiver_email message["Subject"] = subject # ΠΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ΅Π»ΠΎ ΠΏΠΈΡΡΠΌΠ° message.attach(MIMEText(body, "plain")) # ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ SMTP-ΡΠ΅ΡΠ²Π΅ΡΡ (ΠΏΡΠΈΠΌΠ΅Ρ Gmail).smtp_server = "smtp.gmail.com" smtp_port = 25 with smtplib.SMTP(smtp_server, smtp_port) as server: # # ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π±Ρ Π½Π° SMTP-ΡΠ΅ΡΠ²Π΅ΡΠ΅ server.ehlo() # ΠΡΠΏΡΠ°Π²ΠΊΠ° server.sendmail(sender_email, receiver_email, message.as_string()) print("Email sent successfully.")
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²Π½Π΅ΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΡΡ 25, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ SMTP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
ΠΡΠΎ SMTP-ΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ TLS, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌ Π½ΠΈΠΆΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠΌ.
πΒ ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ SendEmail Π½Π° Linux
Π‘ΠΊΡΠΈΠΏΡ Python Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TLS
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ²ΡΠ·Ρ Ρ smtp-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΡΡ 587 Π²ΠΌΠ΅ΡΡΠΎ 25.
ΠΠΎΡΡ 587 ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ TLS (Transport Layer Security) ΠΈΠ»ΠΈ STARTTLS, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΡΠΈΠΌ Python-ΡΠΊΡΠΈΠΏΡΠΎΠΌ) ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Ρ TLS:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders # Email ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ sender_email = "your_email@gmail.com" receiver_email = "recipient_email@example.com" subject = "Subject of the email" body = "Body of the email" # Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ message = MIMEMultipart() message["From"] = sender_email message["To"] = receiver_email message["Subject"] = subject # ΠΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ΅Π»ΠΎ ΠΏΠΈΡΡΠΌΠ° message.attach(MIMEText(body, "plain")) # ΠΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ°ΠΉΠ» attachment_file_path = "/path/to/your/file.txt" attachment = open(attachment_file_path, "rb") part = MIMEBase("application", "octet-stream") part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header( "Content-Disposition", f"attachment; filename= {attachment_file_path.split('/')[-1]}", ) message.attach(part) # ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ SMTP-ΡΠ΅ΡΠ²Π΅ΡΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡ 25). smtp_server = "smtp.gmail.com" smtp_port = 587 smtp_username = "your_email@gmail.com" smtp_password = "your_email_password" with smtplib.SMTP(smtp_server, smtp_port) as server: # Start TLS for security server.starttls() # ΠΡ ΠΎΠ΄ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ server.login(smtp_username, smtp_password) server.sendmail(sender_email, receiver_email, message.as_string()) print("Email with attachment sent successfully.")
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π½Π° smtp-ΡΠ΅ΡΠ²Π΅Ρ.
Π‘ΠΏΠΎΠ½ΡΠΎΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ – Π½Π°ΡΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΡ ΠΏΠ°ΠΌΠΏΠ°Π΄Ρ