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.tomlorsetup.pyis 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
# Example instantiation of the MyMailSender class
mymailsender = MyMailSender(
smtp_server="smtp.example.com",
port=25, # or 587 for TLS, 465 for SSL, etc.
use_tls=False, # True if you want STARTTLS
use_ssl=False, # True if using SSL on port 465
use_auth=False, # True if the server requires username/password
)
# Send a simple email
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,
# Additional overrides as needed
)
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
25or587(ifuse_tls=True), or465(ifuse_ssl=True). - use_tls (bool): Set to
Trueto enable STARTTLS after connecting. Typically used with port 587. - use_ssl (bool): Set to
Trueif you want an SSL connection from the start (SMTPS). Typically used with port 465. - use_auth (bool): Set to
Trueif 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
# Create the MyMailSender
mymail = MyMailSender(
smtp_server="localhost",
port=25,
use_tls=False,
use_ssl=False,
use_auth=False
)
# Send a basic text-only message
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.
Release files for mymailsender 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mymailsender-0.1.6.tar.gz | 5.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mymailsender-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.5 kB
Release files / mymailsender-0.1.6.tar.gz
| Download URL | mymailsender-0.1.6.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70af6358405f6bdb14988249ce5c4d471376e424741fe6eaae48ea8bf9da4b58
|
|
BLAKE2b-256 checksum How to use checksums |
ddf59ce199c336add9b22b60cd7d2f8ab9ec3a7eda8fc61f8cf51fa20d6ac1c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 27, 2024.
Transparency logRelease files / mymailsender-0.1.6-py3-none-any.whl
| Download URL | mymailsender-0.1.6-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d863d832ca1b6119f007fe339460f4aaaa46ee779e86f138db4ae821a7d69d9
|
|
BLAKE2b-256 checksum How to use checksums |
a9403e9c97c40dafd95e87159a9411c80ac5507e4aeaf44eae294d6720d4389b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 27, 2024.
Transparency log