
MyMailSender
A simple Python wrapper for sending SMTP emails. This package lets you configure:
- TLS/SSL or plain connections
- Authentication or unauthenticated connections
- Attachments, HTML/Plain text messages, CC and BCC
- And more...
Table of Contents
Installation
-
Clone or download this repository.
-
Navigate to the project directory (where pyproject.toml
or setup.py
is located).
-
Install in editable/development mode:
pip install -e .
Alternatively, if you've built a wheel or tar.gz
:
pip install dist/mymailsender-0.1.0-py3-none-any.whl
Once installed, you can import it anywhere in your code:
from mymailsender import MyMailSender
Quick Start
from mymailsender import MyMailSender
mymailsender = MyMailSender(
smtp_server="smtp.example.com",
port=25,
use_tls=False,
use_ssl=False,
use_auth=False,
)
mymailsender.send_mail(
sender_email="me@example.com",
recipient_emails=["you@example.org"],
subject="Hello World",
body_text="This is a test email using mymailsender."
)
Configuration
The MyMailSender
class uses a mailsender.yaml
file for default configurations. This file should be placed in the project directory and can include the following settings:
smtp_server: "smtp.example.com"
port: 25
use_tls: false
use_ssl: false
use_auth: false
username: "your_username"
password: "your_password"
You can also override these settings by providing arguments when initializing the MyMailSender
instance:
from mymailsender import MyMailSender
mymailsender = MyMailSender(
smtp_server="smtp.override.com",
port=587,
use_tls=True,
)
The available configuration parameters are:
- smtp_server (str): The domain or IP of your SMTP server, e.g.
"smtp.gmail.com"
, "localhost"
, etc.
- port (int): The SMTP port. Often
25
or 587
(if use_tls=True
), or 465
(if use_ssl=True
).
- use_tls (bool): Set to
True
to enable STARTTLS after connecting. Typically used with port 587.
- use_ssl (bool): Set to
True
if you want an SSL connection from the start (SMTPS). Typically used with port 465.
- use_auth (bool): Set to
True
if the server requires authentication with username and password.
- username (str, optional): Your SMTP username (if
use_auth=True
).
- password (str, optional): Your SMTP password (if
use_auth=True
).
Usage Examples
Send a Basic Email
from mymailsender import MyMailSender
mymail = MyMailSender(
smtp_server="localhost",
port=25,
use_tls=False,
use_ssl=False,
use_auth=False
)
mymail.send_mail(
sender_email="sender@localhost",
recipient_emails=["recipient@localhost"],
subject="Test Email",
body_text="Hello from mymailsender!",
)
Send an Email with Attachments
from mymailsender import MyMailSender
mymail = MyMailSender(
smtp_server="smtp.example.com",
port=587,
use_tls=True,
use_ssl=False,
use_auth=True,
username="myuser",
password="mypassword"
)
mymail.send_mail(
sender_email="myuser@example.com",
recipient_emails=["recipient@example.org"],
subject="Hello with Attachments",
body_text="Hello, please see the attached files.",
attachments=[
"reports/report1.pdf",
"/path/to/image.png"
]
)
Using CC and BCC
Configure some custom connection settings in mailsender.yaml
:
smtp_server: "smtp.example.com"
username: myusername
password: mypass
Which now allows you to initialize the MyMailSender
instance without specifying any arguments:
from mymailsender import MyMailSender
mymail = MyMailSender()
mymail.send_mail(
sender_email="me@example.com",
recipient_emails=["primary@example.org"],
subject="Test CC and BCC",
body_text="Hello, just testing CC and BCC!",
cc_emails=["colleague@example.org"],
bcc_emails=["secret@example.org"]
)
License
This project is distributed under the MIT License. Feel free to use it, modify it, or distribute it as you wish. See LICENSE for more information.