π Email Sending Automation
Streamlining the dispatch of digital correspondence has become an indispensable practice in today's interconnected landscape. This guide illuminates the path to programmatic dispatch, making it accessible for anyone frequently engaged in broadcasting information or marketing dispatches to a diverse audience.
The Foundation: Why Automate?
The manual dispatch of electronic messages, especially when targeting a large number of recipients, is tedious, error-prone, and inefficient. Programmatic dispatch transforms this chore into a swift, repeatable operation. It ensures consistency, saves valuable time, and allows for personalized communications at scale, turning a daunting task into a manageable workflow.
Essential Components for Dispatch
At its core, dispatching electronic messages programmatically involves a few key elements:
β’ SMTP Server: The Simple Mail Transfer Protocol (SMTP) server is the digital post office responsible for sending out messages. Services like Gmail, Outlook, and others provide SMTP access.
β’ Authentication: To use an SMTP server, one typically needs a sender's address and a corresponding password or app-specific password for secure access.
β’ Libraries: Python offers robust built-in modules, primarily
β’ Recipient Data: A structured collection of receiver addresses, often from a file (like a CSV) or a database, is crucial for bulk dispatch.
β’ Message Content: This includes the subject line, the body of the message (plain text or formatted HTML), and any attachments.
Basic Text Dispatch
Let's begin with a simple example of dispatching a plain text message.
This fundamental script connects, authenticates, composes, and sends a simple text-based communication.
Rich Content and Attachments
For more sophisticated communications, such as those with styling, images, or attached files, the
Streamlining the dispatch of digital correspondence has become an indispensable practice in today's interconnected landscape. This guide illuminates the path to programmatic dispatch, making it accessible for anyone frequently engaged in broadcasting information or marketing dispatches to a diverse audience.
The Foundation: Why Automate?
The manual dispatch of electronic messages, especially when targeting a large number of recipients, is tedious, error-prone, and inefficient. Programmatic dispatch transforms this chore into a swift, repeatable operation. It ensures consistency, saves valuable time, and allows for personalized communications at scale, turning a daunting task into a manageable workflow.
Essential Components for Dispatch
At its core, dispatching electronic messages programmatically involves a few key elements:
β’ SMTP Server: The Simple Mail Transfer Protocol (SMTP) server is the digital post office responsible for sending out messages. Services like Gmail, Outlook, and others provide SMTP access.
β’ Authentication: To use an SMTP server, one typically needs a sender's address and a corresponding password or app-specific password for secure access.
β’ Libraries: Python offers robust built-in modules, primarily
smtplib for handling the server communication and email for constructing complex message structures.β’ Recipient Data: A structured collection of receiver addresses, often from a file (like a CSV) or a database, is crucial for bulk dispatch.
β’ Message Content: This includes the subject line, the body of the message (plain text or formatted HTML), and any attachments.
Basic Text Dispatch
Let's begin with a simple example of dispatching a plain text message.
import smtplib
from email.mime.text import MIMEText
import os
# Configuration details (use environment variables for security)
sender_email = os.environ.get("SENDER_EMAIL")
sender_password = os.environ.get("SENDER_PASSWORD")
smtp_server = "smtp.gmail.com" # Example for Gmail
smtp_port = 587 # TLS port
def send_plain_text_message(recipient_address, subject_line, message_body):
try:
# Create a new message object
msg = MIMEText(message_body)
msg["Subject"] = subject_line
msg["From"] = sender_email
msg["To"] = recipient_address
# Establish a secure connection to the SMTP server
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # Enable Transport Layer Security
server.login(sender_email, sender_password)
server.send_message(msg)
print(f"Message successfully sent to {recipient_address}")
except Exception as e:
print(f"Error dispatching to {recipient_address}: {e}")
# Usage example
# Set these as environment variables before running:
# export SENDER_EMAIL="[email protected]"
# export SENDER_PASSWORD="your_app_password"
# (For Gmail, generate an app password from Google Account security settings)
# send_plain_text_message("[email protected]", "Hello from Python!", "This is a test message from our dispatch script.")
This fundamental script connects, authenticates, composes, and sends a simple text-based communication.
Rich Content and Attachments
For more sophisticated communications, such as those with styling, images, or attached files, the
email.mime submodules are essential. We use MIMEMultipart to create a container for different parts of the message.from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os
import smtplib
# Reusing sender details from above
def send_rich_message_with_attachment(recipient_address, subject_line, html_body, file_path=None):
try:
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = recipient_address
msg["Subject"] = subject_line
# Attach HTML body
msg.attach(MIMEText(html_body, "html"))
# Attach a file if provided
if file_path:
with open(file_path, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {os.path.basename(file_path)}",
)
msg.attach(part)
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(sender_email, sender_password)
server.send_message(msg)
print(f"Rich message successfully sent to {recipient_address}")
except Exception as e:
print(f"Error dispatching rich message to {recipient_address}: {e}")
# Usage example
# html_content = """
# <html>
# <body>
# <p>Hi there,</p>
# <p>This is an <b>HTML-formatted</b> message dispatched via Python!</p>
# <p>Best regards,<br>The Dispatch System</p>
# </body>
# </html>
# """
# # Create a dummy file for testing attachment
# # with open("report.txt", "w") as f:
# # f.write("This is a test report content.")
# # send_rich_message_with_attachment("[email protected]", "Your Custom HTML Dispatch with Attachment", html_content, "report.txt")
This expanded example demonstrates how to build a message containing both rich text and an arbitrary file attachment, providing much greater flexibility for communication.
Handling Multiple Receivers and Personalization
For broadcasting to many individuals, integrate a loop that reads receiver information from a source. Each iteration can dispatch a unique, personalized message.
import csv
import time # For rate limiting
def send_bulk_messages(recipient_data_file, subject_template, body_template):
with open(recipient_data_file, mode='r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
recipient_address = row["email"]
name = row.get("name", "Recipient") # Default if 'name' not in CSV
# Personalize subject and body
personalized_subject = subject_template.format(name=name)
personalized_body = body_template.format(name=name)
send_plain_text_message(recipient_address, personalized_subject, personalized_body)
time.sleep(2) # Pause to avoid hitting server rate limits
# Usage Example:
# Create a CSV file named 'recipients.csv'
# email,name
# [email protected],Alice
# [email protected],Bob
# [email protected],Charlie
# subject = "Hello, {name} from Our System!"
# body = "Dear {name},\n\nWe hope this message finds you well. This is a personalized update.\n\nRegards,\nTeam Automation"
# send_bulk_messages("recipients.csv", subject, body)
This structure allows for highly targeted and personalized mass communications, where each individual receives content tailored with their specific details.
Considerations for Robustness and Security
β’ Error Handling: Always wrap dispatch logic in
β’ Security: Never hardcode credentials directly in scripts. Use environment variables (
β’ Rate Limits: SMTP servers impose limits on the number of messages one can send per hour or day. Implement pauses (
β’ Opt-Outs: For promotional dispatches, ensure compliance with regulations (like GDPR, CAN-SPAM) by including clear unsubscribe options.
Concluding Thoughts
Automating electronic message dispatch empowers users to scale their communication efforts with remarkable efficiency. By leveraging Python's native capabilities, anyone can construct a powerful, flexible system for broadcasting anything from routine updates to extensive promotional campaigns. The journey into programmatic dispatch unveils a world of streamlined operations and enhanced communicative reach.
#python #automation #email #smtplib #emailautomation #programming #scripting #communication #developer #efficiency
βββββββββββββββ
By: @DataScienceN β¨
try-except blocks to gracefully handle network issues, authentication failures, or incorrect receiver addresses.β’ Security: Never hardcode credentials directly in scripts. Use environment variables (
os.environ.get()) or a secure configuration management system. Ensure starttls() is called for encrypted communication.β’ Rate Limits: SMTP servers impose limits on the number of messages one can send per hour or day. Implement pauses (
time.sleep()) between dispatches to respect these limits and avoid being flagged as a spammer.β’ Opt-Outs: For promotional dispatches, ensure compliance with regulations (like GDPR, CAN-SPAM) by including clear unsubscribe options.
Concluding Thoughts
Automating electronic message dispatch empowers users to scale their communication efforts with remarkable efficiency. By leveraging Python's native capabilities, anyone can construct a powerful, flexible system for broadcasting anything from routine updates to extensive promotional campaigns. The journey into programmatic dispatch unveils a world of streamlined operations and enhanced communicative reach.
#python #automation #email #smtplib #emailautomation #programming #scripting #communication #developer #efficiency
βββββββββββββββ
By: @DataScienceN β¨
π₯ Trending Repository: traefik
π Description: The Cloud Native Application Proxy
π Repository URL: https://github.com/traefik/traefik
π Website: https://traefik.io
π Readme: https://github.com/traefik/traefik#readme
π Statistics:
π Stars: 57.7K stars
π Watchers: 666
π΄ Forks: 5.5K forks
π» Programming Languages: Go - TypeScript - JavaScript - Shell - Makefile - HTML
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: The Cloud Native Application Proxy
π Repository URL: https://github.com/traefik/traefik
π Website: https://traefik.io
π Readme: https://github.com/traefik/traefik#readme
π Statistics:
π Stars: 57.7K stars
π Watchers: 666
π΄ Forks: 5.5K forks
π» Programming Languages: Go - TypeScript - JavaScript - Shell - Makefile - HTML
π·οΈ Related Topics:
#go #letsencrypt #docker #kubernetes #golang #microservice #consul #load_balancer #zookeeper #marathon #etcd #mesos #reverse_proxy #traefik
==================================
π§ By: https://www.tgoop.com/DataScienceM
π₯ Trending Repository: LightRAG
π Description: [EMNLP2025] "LightRAG: Simple and Fast Retrieval-Augmented Generation"
π Repository URL: https://github.com/HKUDS/LightRAG
π Website: https://arxiv.org/abs/2410.05779
π Readme: https://github.com/HKUDS/LightRAG#readme
π Statistics:
π Stars: 22.6K stars
π Watchers: 162
π΄ Forks: 3.4K forks
π» Programming Languages: Python - TypeScript - Shell - JavaScript - CSS - Dockerfile
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: [EMNLP2025] "LightRAG: Simple and Fast Retrieval-Augmented Generation"
π Repository URL: https://github.com/HKUDS/LightRAG
π Website: https://arxiv.org/abs/2410.05779
π Readme: https://github.com/HKUDS/LightRAG#readme
π Statistics:
π Stars: 22.6K stars
π Watchers: 162
π΄ Forks: 3.4K forks
π» Programming Languages: Python - TypeScript - Shell - JavaScript - CSS - Dockerfile
π·οΈ Related Topics:
#knowledge_graph #gpt #rag #gpt_4 #large_language_models #llm #genai #retrieval_augmented_generation #graphrag
==================================
π§ By: https://www.tgoop.com/DataScienceM
π₯ Trending Repository: verl
π Description: verl: Volcano Engine Reinforcement Learning for LLMs
π Repository URL: https://github.com/volcengine/verl
π Website: https://verl.readthedocs.io/en/latest/index.html
π Readme: https://github.com/volcengine/verl#readme
π Statistics:
π Stars: 15.4K stars
π Watchers: 79
π΄ Forks: 2.5K forks
π» Programming Languages: Python - Shell
π·οΈ Related Topics: Not available
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: verl: Volcano Engine Reinforcement Learning for LLMs
π Repository URL: https://github.com/volcengine/verl
π Website: https://verl.readthedocs.io/en/latest/index.html
π Readme: https://github.com/volcengine/verl#readme
π Statistics:
π Stars: 15.4K stars
π Watchers: 79
π΄ Forks: 2.5K forks
π» Programming Languages: Python - Shell
π·οΈ Related Topics: Not available
==================================
π§ By: https://www.tgoop.com/DataScienceM
π₯ Trending Repository: Memori
π Description: Open-Source Memory Engine for LLMs, AI Agents & Multi-Agent Systems
π Repository URL: https://github.com/GibsonAI/Memori
π Website: https://memorilabs.ai
π Readme: https://github.com/GibsonAI/Memori#readme
π Statistics:
π Stars: 2.3K stars
π Watchers: 18
π΄ Forks: 216 forks
π» Programming Languages: Python - PLpgSQL
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: Open-Source Memory Engine for LLMs, AI Agents & Multi-Agent Systems
π Repository URL: https://github.com/GibsonAI/Memori
π Website: https://memorilabs.ai
π Readme: https://github.com/GibsonAI/Memori#readme
π Statistics:
π Stars: 2.3K stars
π Watchers: 18
π΄ Forks: 216 forks
π» Programming Languages: Python - PLpgSQL
π·οΈ Related Topics:
#python #agent #awesome #state_management #ai #memory #memory_management #hacktoberfest #long_short_term_memory #rag #llm #memori_ai #hacktoberfest2025 #chatgpt #aiagent
==================================
π§ By: https://www.tgoop.com/DataScienceM
π₯ Trending Repository: WSABuilds
π Description: Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.
π Repository URL: https://github.com/MustardChef/WSABuilds
π Readme: https://github.com/MustardChef/WSABuilds#readme
π Statistics:
π Stars: 12.6K stars
π Watchers: 135
π΄ Forks: 2K forks
π» Programming Languages: Python - Shell - PowerShell
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.
π Repository URL: https://github.com/MustardChef/WSABuilds
π Readme: https://github.com/MustardChef/WSABuilds#readme
π Statistics:
π Stars: 12.6K stars
π Watchers: 135
π΄ Forks: 2K forks
π» Programming Languages: Python - Shell - PowerShell
π·οΈ Related Topics:
#android #windows #google_apps #windows_10 #windows10 #android_emulator #subsystem #magisk #windows_11 #wsa #windows_subsystem_for_android #windows_subsystem_android #windowssubsystemforandroid #magiskonwsa #wsa_with_gapps_and_magisk #wsa_root #kernelsu #magiskonwsalocal #wsapatch
==================================
π§ By: https://www.tgoop.com/DataScienceM
β€1
π₯ Trending Repository: engine
π Description: Powerful web graphics runtime built on WebGL, WebGPU, WebXR and glTF
π Repository URL: https://github.com/playcanvas/engine
π Website: https://playcanvas.com
π Readme: https://github.com/playcanvas/engine#readme
π Statistics:
π Stars: 11.1K stars
π Watchers: 328
π΄ Forks: 1.5K forks
π» Programming Languages: JavaScript
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: Powerful web graphics runtime built on WebGL, WebGPU, WebXR and glTF
π Repository URL: https://github.com/playcanvas/engine
π Website: https://playcanvas.com
π Readme: https://github.com/playcanvas/engine#readme
π Statistics:
π Stars: 11.1K stars
π Watchers: 328
π΄ Forks: 1.5K forks
π» Programming Languages: JavaScript
π·οΈ Related Topics:
#nodejs #javascript #gamedev #webgl #typescript #game_engine #game_development #virtual_reality #webgl2 #gltf #hacktoberfest #playcanvas #webgpu #webxr #gaussian_splatting #3d_gaussian_splatting
==================================
π§ By: https://www.tgoop.com/DataScienceM
π1
π₯ Trending Repository: tracy
π Description: Frame profiler
π Repository URL: https://github.com/wolfpld/tracy
π Website: https://tracy.nereid.pl/
π Readme: https://github.com/wolfpld/tracy#readme
π Statistics:
π Stars: 13.1K stars
π Watchers: 95
π΄ Forks: 888 forks
π» Programming Languages: C++ - TeX - C - Python - CMake - Fortran
π·οΈ Related Topics:
==================================
π§ By: https://www.tgoop.com/DataScienceM
π Description: Frame profiler
π Repository URL: https://github.com/wolfpld/tracy
π Website: https://tracy.nereid.pl/
π Readme: https://github.com/wolfpld/tracy#readme
π Statistics:
π Stars: 13.1K stars
π Watchers: 95
π΄ Forks: 888 forks
π» Programming Languages: C++ - TeX - C - Python - CMake - Fortran
π·οΈ Related Topics:
#gamedev #library #performance #profiler #performance_analysis #profiling #gamedev_library #profiling_library #gamedevelopment
==================================
π§ By: https://www.tgoop.com/DataScienceM
π1
Photo scraping has finally arrived!
In the new v2 Firecrawl endpoint, you can now pull images from websites. Suitable for multimodal LLM applications, model fine-tuning, and other tasks.
You can apply filters by resolution, aspect ratio, or image type.
Already over 66 thousand stars onπ
https://github.com/firecrawl/firecrawl
π @DataScienceN
In the new v2 Firecrawl endpoint, you can now pull images from websites. Suitable for multimodal LLM applications, model fine-tuning, and other tasks.
You can apply filters by resolution, aspect ratio, or image type.
Already over 66 thousand stars on
https://github.com/firecrawl/firecrawl
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π2
This media is not supported in your browser
VIEW IN TELEGRAM
π¨π»βπ» Its name is Qoder, an AI IDE that thinks, plans, writes code, and executes it by itself so you can build software more easily.
β
β
β
ββββββββββββββ
https://www.tgoop.com/DataScienceN
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3π2
Forwarded from Machine Learning with Python
π THE 7-DAY PROFIT CHALLENGE! π
Can you turn $100 into $5,000 in just 7 days?
Lisa can. And sheβs challenging YOU to do the same. π
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
Can you turn $100 into $5,000 in just 7 days?
Lisa can. And sheβs challenging YOU to do the same. π
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
https://www.tgoop.com/+AOPQVJRWlJc5ZGRi
This media is not supported in your browser
VIEW IN TELEGRAM
π¨π»βπ» From now on, you have a real AI assistant inside your notebook, not just a code completion tool!
ββββββββββββββ
https://www.tgoop.com/DataScienceN
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π1
πΈ PacketSDK--A New Way To Make Revenue From Your Apps
Regardless of whether your app is on desktop, mobile, TV, or Unity platforms, no matter which app monetization tools youβre using, PacketSDK can bring you additional revenue!
β Working Principle: Convert your app's active users into profits π₯βπ΅
β Product Features: Ad-free monetization π«, no user interference
β Additional Revenue: Fully compatible with your existing ad SDKs
β CCPA & GDPR: Based on user consent, no collection of any personal data π
β Easy Integration: Only a few simple steps, taking approximately 30 minutes
Join usοΌhttps://www.packetsdk.com/?utm-source=SyWayQNK
Contact us & Estimated income:
Telegram:@Packet_SDK
Whatsapp:https://wa.me/85256440384
Teams:https://teams.live.com/l/invite/FBA_1zP2ehmA6Jn4AI
β° Join early ,earn early!
Regardless of whether your app is on desktop, mobile, TV, or Unity platforms, no matter which app monetization tools youβre using, PacketSDK can bring you additional revenue!
β Working Principle: Convert your app's active users into profits π₯βπ΅
β Product Features: Ad-free monetization π«, no user interference
β Additional Revenue: Fully compatible with your existing ad SDKs
β CCPA & GDPR: Based on user consent, no collection of any personal data π
β Easy Integration: Only a few simple steps, taking approximately 30 minutes
Join usοΌhttps://www.packetsdk.com/?utm-source=SyWayQNK
Contact us & Estimated income:
Telegram:@Packet_SDK
Whatsapp:https://wa.me/85256440384
Teams:https://teams.live.com/l/invite/FBA_1zP2ehmA6Jn4AI
β° Join early ,earn early!
β€3
Media is too big
VIEW IN TELEGRAM
If you love tools that save time, money, and nerves β this is 100% for you.
This is an open-source panel on Python + Streamlit, packed with a whole arsenal of useful automations.
You open it β and itβs like gaining a superpower: doing everything faster.
What it can do:
π News Reader β reads out current news.
And thatβs just part of the list.
Why do you need this?
git clone https://github.com/Ai-Quill/automated.git
cd automated
pip install -r requirements.txt
streamlit run app.py
http://localhost:8501And enjoy the panel where all tools are just one click away.
#python #soft #github
https://www.tgoop.com/DataScienceN
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3
Media is too big
VIEW IN TELEGRAM
Deepnote has released a new open notebook format that solves the old problems of Jupyter.
Instead of noisy JSON, now YAML with proper git diff. Support for Python and SQL in one file, shared project settings, new blocks for charts and SQL, proper teamwork and collaborative editing. Conversion from .ipynb in one step. Everything is open-source.π
Instead of noisy JSON, now YAML with proper git diff. Support for Python and SQL in one file, shared project settings, new blocks for charts and SQL, proper teamwork and collaborative editing. Conversion from .ipynb in one step. Everything is open-source.
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3
Data Science Jupyter Notebooks
πΈ PacketSDK--A New Way To Make Revenue From Your Apps Regardless of whether your app is on desktop, mobile, TV, or Unity platforms, no matter which app monetization tools youβre using, PacketSDK can bring you additional revenue! β Working Principle: Convertβ¦
I want to share a tool that I genuinely believe can make a real difference for anyone building apps: PacketSDK. Many developers have strong active-user bases but still struggle to increase revenue. Thatβs exactly why this solution stands outβit adds extra income without disrupting users or interfering with your existing monetization methods.
Why I strongly recommend it:
* It turns your active users into immediate profit without showing ads.
* Integration is fast and straightforwardβaround 30 minutes.
* It works on all platforms: mobile, desktop, TV, Unity, and more.
As a channel owner, I recommend trying this service; you have nothing to lose.
I used it and found its earnings amazing.
Why I strongly recommend it:
* It turns your active users into immediate profit without showing ads.
* Integration is fast and straightforwardβaround 30 minutes.
* It works on all platforms: mobile, desktop, TV, Unity, and more.
As a channel owner, I recommend trying this service; you have nothing to lose.
I used it and found its earnings amazing.
β€3
πͺ +30.560$ with 300$ in a month of trading! We can teach you how to earn! FREE!
It was a challenge - a marathon 300$ to 30.000$ on trading, together with Lisa!
What is the essence of earning?: "Analyze and open a deal on the exchange, knowing where the currency rate will go. Lisa trades every day and posts signals on her channel for free."
πΉStart: $150
πΉ Goal: $20,000
πΉPeriod: 1.5 months.
Join and get started, there will be no second chanceπ
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
It was a challenge - a marathon 300$ to 30.000$ on trading, together with Lisa!
What is the essence of earning?: "Analyze and open a deal on the exchange, knowing where the currency rate will go. Lisa trades every day and posts signals on her channel for free."
πΉStart: $150
πΉ Goal: $20,000
πΉPeriod: 1.5 months.
Join and get started, there will be no second chanceπ
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
https://www.tgoop.com/+L9_l-dxOJxI2ZGUy
β€2
