Notice: file_put_contents(): Write of 23299 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50
[PYTHON:TODAY]@python2day P.6457
PYTHON2DAY Telegram 6457
πŸ‘¨β€πŸ’» АвтоматизируСм ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ писСм с влоТСниями Π½Π° Python β€” ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈ с Π»ΠΎΠ³Π°ΠΌΠΈ!

Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс рассылки писСм ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ сталкивался с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Π΅ сообщСния Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ.

πŸ“© Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ:
βœ”οΈ Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ письмо с HTML-Ρ‚Π΅Π»ΠΎΠΌ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
βœ”οΈ ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· SMTP.
βœ”οΈ БохраняСт Π² ΠΏΠ°ΠΏΠΊΡƒ "ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅".
βœ”οΈ ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈ Π² консоли ΠΈ сохраняСт ΠΈΡ… Π² Ρ„Π°ΠΉΠ».
βœ”οΈ ΠžΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ всё Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок.

Код:

import os
import time
import imaplib
import smtplib
import logging
from typing import Optional
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.utils import formatdate

# Π›ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s β€” %(levelname)s β€” %(message)s",
handlers=[
logging.FileHandler("email_sender.log"),
logging.StreamHandler()
]
)

def create_email(
from_addr: str,
to_addr: str,
subject: str,
body: str,
attachment_path: Optional[str] = None
) -> MIMEMultipart:
logging.info("БозданиС письма...")
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Subject"] = Header(subject, 'utf-8')
msg["Date"] = formatdate(localtime=True)
msg.attach(MIMEText(body, 'html', 'utf-8'))

if attachment_path and os.path.exists(attachment_path):
try:
part = MIMEBase('application', "octet-stream")
with open(attachment_path, "rb") as file:
part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header(
'Content-Disposition',
f'attachment; filename="{os.path.basename(attachment_path)}"'
)
msg.attach(part)
logging.info(f"Π€Π°ΠΉΠ» ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½: {attachment_path}")
except Exception as e:
logging.error(f"Ошибка ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°: {e}")
else:
logging.warning("Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ β€” письмо Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π· влоТСния.")

return msg

def send_email(
smtp_server: str,
smtp_port: int,
from_addr: str,
from_pass: str,
to_addr: str,
message: MIMEMultipart
) -> None:
try:
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(from_addr, from_pass)
smtp.sendmail(from_addr, to_addr, message.as_string())
logging.info(f"Письмо ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° {to_addr}")
except Exception as e:
logging.error(f"Ошибка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма: {e}")

def save_to_sent(
imap_server: str,
imap_port: int,
from_addr: str,
from_pass: str,
message: MIMEMultipart
) -> None:
try:
with imaplib.IMAP4(imap_server, imap_port) as imap:
imap.login(from_addr, from_pass)
imap.select('Sent')
imap.append('Sent', None, imaplib.Time2Internaldate(time.time()), message.as_bytes())
logging.info("Письмо сохранСно Π² 'Sent'")
except Exception as e:
logging.error(f"Ошибка сохранСния письма: {e}")

if __name__ == "__main__":
FROM_EMAIL = "corp-mail@mail.ru"
FROM_PASSWORD = "*"
SMTP_SERVER = "*.mail.ru"
SMTP_PORT = 25
IMAP_PORT = 143
TO_EMAIL = "students-mail@mail.ru"
SUBJECT = "Π’Π΅ΠΌΠ° сообщСния"
BODY = "ВСкст сообщСния"
ATTACHMENT_PATH = "сСртификат.pdf"

try:
email_msg = create_email(FROM_EMAIL, TO_EMAIL, SUBJECT, BODY, ATTACHMENT_PATH)
send_email(SMTP_SERVER, SMTP_PORT, FROM_EMAIL, FROM_PASSWORD, TO_EMAIL, email_msg)
save_to_sent(SMTP_SERVER, IMAP_PORT, FROM_EMAIL, FROM_PASSWORD, email_msg)
except Exception as e:
logging.critical(f"ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка: {e}")


πŸ“© Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉ свои письма ΠΈ Π·Π°Π±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎ Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€ΡƒΡ‚ΠΈΠ½Ρƒ!

πŸ“‚ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈ сСбС ΠΈΠ»ΠΈ ΡˆΠ°Ρ€ΡŒ Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ занимаСтся рассылками ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ΠΎΠΌ.

#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘50πŸ”₯9❀6😱3🫑1



tgoop.com/python2day/6457
Create:
Last Update:

πŸ‘¨β€πŸ’» АвтоматизируСм ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ писСм с влоТСниями Π½Π° Python β€” ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈ с Π»ΠΎΠ³Π°ΠΌΠΈ!

Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс рассылки писСм ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ сталкивался с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Π΅ сообщСния Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ.

πŸ“© Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ:
βœ”οΈ Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ письмо с HTML-Ρ‚Π΅Π»ΠΎΠΌ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
βœ”οΈ ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· SMTP.
βœ”οΈ БохраняСт Π² ΠΏΠ°ΠΏΠΊΡƒ "ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅".
βœ”οΈ ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈ Π² консоли ΠΈ сохраняСт ΠΈΡ… Π² Ρ„Π°ΠΉΠ».
βœ”οΈ ΠžΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ всё Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок.

Код:

import os
import time
import imaplib
import smtplib
import logging
from typing import Optional
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.utils import formatdate

# Π›ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s β€” %(levelname)s β€” %(message)s",
handlers=[
logging.FileHandler("email_sender.log"),
logging.StreamHandler()
]
)

def create_email(
from_addr: str,
to_addr: str,
subject: str,
body: str,
attachment_path: Optional[str] = None
) -> MIMEMultipart:
logging.info("БозданиС письма...")
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Subject"] = Header(subject, 'utf-8')
msg["Date"] = formatdate(localtime=True)
msg.attach(MIMEText(body, 'html', 'utf-8'))

if attachment_path and os.path.exists(attachment_path):
try:
part = MIMEBase('application', "octet-stream")
with open(attachment_path, "rb") as file:
part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header(
'Content-Disposition',
f'attachment; filename="{os.path.basename(attachment_path)}"'
)
msg.attach(part)
logging.info(f"Π€Π°ΠΉΠ» ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½: {attachment_path}")
except Exception as e:
logging.error(f"Ошибка ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π°: {e}")
else:
logging.warning("Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ β€” письмо Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π· влоТСния.")

return msg

def send_email(
smtp_server: str,
smtp_port: int,
from_addr: str,
from_pass: str,
to_addr: str,
message: MIMEMultipart
) -> None:
try:
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(from_addr, from_pass)
smtp.sendmail(from_addr, to_addr, message.as_string())
logging.info(f"Письмо ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° {to_addr}")
except Exception as e:
logging.error(f"Ошибка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ письма: {e}")

def save_to_sent(
imap_server: str,
imap_port: int,
from_addr: str,
from_pass: str,
message: MIMEMultipart
) -> None:
try:
with imaplib.IMAP4(imap_server, imap_port) as imap:
imap.login(from_addr, from_pass)
imap.select('Sent')
imap.append('Sent', None, imaplib.Time2Internaldate(time.time()), message.as_bytes())
logging.info("Письмо сохранСно Π² 'Sent'")
except Exception as e:
logging.error(f"Ошибка сохранСния письма: {e}")

if __name__ == "__main__":
FROM_EMAIL = "corp-mail@mail.ru"
FROM_PASSWORD = "*"
SMTP_SERVER = "*.mail.ru"
SMTP_PORT = 25
IMAP_PORT = 143
TO_EMAIL = "students-mail@mail.ru"
SUBJECT = "Π’Π΅ΠΌΠ° сообщСния"
BODY = "ВСкст сообщСния"
ATTACHMENT_PATH = "сСртификат.pdf"

try:
email_msg = create_email(FROM_EMAIL, TO_EMAIL, SUBJECT, BODY, ATTACHMENT_PATH)
send_email(SMTP_SERVER, SMTP_PORT, FROM_EMAIL, FROM_PASSWORD, TO_EMAIL, email_msg)
save_to_sent(SMTP_SERVER, IMAP_PORT, FROM_EMAIL, FROM_PASSWORD, email_msg)
except Exception as e:
logging.critical(f"ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка: {e}")


πŸ“© Π—Π°Π³Ρ€ΡƒΠΆΠ°ΠΉ свои письма ΠΈ Π·Π°Π±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎ Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€ΡƒΡ‚ΠΈΠ½Ρƒ!

πŸ“‚ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈ сСбС ΠΈΠ»ΠΈ ΡˆΠ°Ρ€ΡŒ Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ занимаСтся рассылками ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ΠΎΠΌ.

#python #soft #code

BY [PYTHON:TODAY]




Share with your friend now:
tgoop.com/python2day/6457

View MORE
Open in Telegram


Telegram News

Date: |

Telegram users themselves will be able to flag and report potentially false content. The group’s featured image is of a Pepe frog yelling, often referred to as the β€œREEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and β€œdegen” culture. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. 1What is Telegram Channels?
from us


Telegram [PYTHON:TODAY]
FROM American