# SWECC Email Sender
An email automation library using SendGrid API. Supports both single and batch email sending with Markdown formatting and template substitution.
## Features
- Single and batch email sending
- Markdown to HTML conversion with styling
- Template substitution support
- CSV and JSON data source support
- Preview and validation modes
## Installation
```bash
pip install swecc-email-sender
```
## Quick Start
### Single Email
```python
from swecc_email_sender import EmailSender
sender = EmailSender() # uses SENDGRID_API_KEY environment variable
success = sender.send_email(
to_email="recipient@example.com",
subject="Hello!",
content="This is a test email",
from_email="sender@example.com"
)
```
### Markdown Email
```python
success = sender.send_email(
to_email="recipient@example.com",
subject="Hello!",
content="# Hello World\n\nThis is a **markdown** email",
from_email="sender@example.com",
is_markdown=True
)
```
### Template Email
```python
template = """
Hello {name}!
Your order #{order_id} has been shipped to:
{address}
Thank you for your business!
"""
success = sender.send_email(
to_email="customer@example.com",
subject="Order #{order_id} Shipped",
content=template,
from_email="shop@example.com",
template_data={
"name": "John Doe",
"order_id": "12345",
"address": "123 Main St, City, Country"
}
)
```
## Command Line Interface
The package includes a command-line interface for easy use:
```bash
# Single email
swecc-email-sender --from sender@example.com --to recipient@example.com --subject "Hello" --content "Test email"
# Markdown email
swecc-email-sender --from sender@example.com --to recipient@example.com --subject "Hello" --content "# Hello" --markdown
# Template with CSV data
swecc-email-sender --from sender@example.com --src recipients.csv --subject "Hello {name}" --template email.md
# Preview first email
swecc-email-sender --from sender@example.com --src data.json --subject "Hello" --template email.md --preview
# Validate templates
swecc-email-sender --from sender@example.com --src data.json --subject "Hello {name}" --template email.md --validate
```
### Data File Formats
#### CSV Example (recipients.csv)
```csv
to_email,name,order_id,address
customer1@example.com,John Doe,12345,123 Main St
customer2@example.com,Jane Smith,12346,456 Oak Ave
```
#### JSON Example (data.json)
```json
[
{
"to_email": "customer1@example.com",
"name": "John Doe",
"order_id": "12345",
"address": "123 Main St"
},
{
"to_email": "customer2@example.com",
"name": "Jane Smith",
"order_id": "12346",
"address": "456 Oak Ave"
}
]
```
## Development
### Setup
1. Clone the repository:
```bash
git clone https://github.com/swecc/swecc-email-sender.git
cd swecc-email-sender
```
2. Create a virtual environment and install dependencies:
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e ".[dev]"
```
### Running Tests
```bash
pytest
```
### Code Style
The project uses:
- Black for code formatting
- isort for import sorting
- mypy for type checking
- flake8 for linting
To run all checks:
```bash
ruff --fix
isort .
mypy swecc_email_sender
flake8 swecc_email_sender
```
## License
This project is licensed under the MIT License - see the LICENSE file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "swecc-email-sender",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "automation, email, markdown, sendgrid",
"author": null,
"author_email": "SWECC <info@swecc.org>",
"download_url": "https://files.pythonhosted.org/packages/4c/c8/e9926abb423e8f584b6b20abfbd69eb56337227aad69da39dca1aec11fa3/swecc_email_sender-1.0.6.tar.gz",
"platform": null,
"description": "# SWECC Email Sender\n\nAn email automation library using SendGrid API. Supports both single and batch email sending with Markdown formatting and template substitution.\n\n## Features\n\n- Single and batch email sending\n- Markdown to HTML conversion with styling\n- Template substitution support\n- CSV and JSON data source support\n- Preview and validation modes\n\n## Installation\n\n```bash\npip install swecc-email-sender\n```\n\n## Quick Start\n\n### Single Email\n\n```python\nfrom swecc_email_sender import EmailSender\n\nsender = EmailSender() # uses SENDGRID_API_KEY environment variable\nsuccess = sender.send_email(\n to_email=\"recipient@example.com\",\n subject=\"Hello!\",\n content=\"This is a test email\",\n from_email=\"sender@example.com\"\n)\n```\n\n### Markdown Email\n\n```python\nsuccess = sender.send_email(\n to_email=\"recipient@example.com\",\n subject=\"Hello!\",\n content=\"# Hello World\\n\\nThis is a **markdown** email\",\n from_email=\"sender@example.com\",\n is_markdown=True\n)\n```\n\n### Template Email\n\n```python\ntemplate = \"\"\"\nHello {name}!\n\nYour order #{order_id} has been shipped to:\n{address}\n\nThank you for your business!\n\"\"\"\n\nsuccess = sender.send_email(\n to_email=\"customer@example.com\",\n subject=\"Order #{order_id} Shipped\",\n content=template,\n from_email=\"shop@example.com\",\n template_data={\n \"name\": \"John Doe\",\n \"order_id\": \"12345\",\n \"address\": \"123 Main St, City, Country\"\n }\n)\n```\n\n## Command Line Interface\n\nThe package includes a command-line interface for easy use:\n\n```bash\n# Single email\nswecc-email-sender --from sender@example.com --to recipient@example.com --subject \"Hello\" --content \"Test email\"\n\n# Markdown email\nswecc-email-sender --from sender@example.com --to recipient@example.com --subject \"Hello\" --content \"# Hello\" --markdown\n\n# Template with CSV data\nswecc-email-sender --from sender@example.com --src recipients.csv --subject \"Hello {name}\" --template email.md\n\n# Preview first email\nswecc-email-sender --from sender@example.com --src data.json --subject \"Hello\" --template email.md --preview\n\n# Validate templates\nswecc-email-sender --from sender@example.com --src data.json --subject \"Hello {name}\" --template email.md --validate\n```\n\n### Data File Formats\n\n#### CSV Example (recipients.csv)\n```csv\nto_email,name,order_id,address\ncustomer1@example.com,John Doe,12345,123 Main St\ncustomer2@example.com,Jane Smith,12346,456 Oak Ave\n```\n\n#### JSON Example (data.json)\n```json\n[\n {\n \"to_email\": \"customer1@example.com\",\n \"name\": \"John Doe\",\n \"order_id\": \"12345\",\n \"address\": \"123 Main St\"\n },\n {\n \"to_email\": \"customer2@example.com\",\n \"name\": \"Jane Smith\",\n \"order_id\": \"12346\",\n \"address\": \"456 Oak Ave\"\n }\n]\n```\n\n## Development\n\n### Setup\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/swecc/swecc-email-sender.git\ncd swecc-email-sender\n```\n\n2. Create a virtual environment and install dependencies:\n```bash\npython -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\npip install -e \".[dev]\"\n```\n\n### Running Tests\n\n```bash\npytest\n```\n\n### Code Style\n\nThe project uses:\n- Black for code formatting\n- isort for import sorting\n- mypy for type checking\n- flake8 for linting\n\nTo run all checks:\n\n```bash\nruff --fix\nisort .\nmypy swecc_email_sender\nflake8 swecc_email_sender\n```\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n",
"bugtrack_url": null,
"license": null,
"summary": "A production-ready email automation library using SendGrid",
"version": "1.0.6",
"project_urls": {
"Bug Tracker": "https://github.com/swecc-uw/swecc-email-sender/issues",
"Documentation": "https://github.com/swecc-uw-uw/swecc-email-sender#readme",
"Homepage": "https://github.com/swecc-uw/swecc-email-sender",
"Repository": "https://github.com/swecc-uw-uw/swecc-email-sender.git"
},
"split_keywords": [
"automation",
" email",
" markdown",
" sendgrid"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "312f1cdcbcb42246edeb3a293b7c5a852ec232145de66901c9de466bb0d47466",
"md5": "8ca05dec1bdef01be6fa116575fb3366",
"sha256": "dbb253c1258ee10f0278cf24a425ee12853fd7cf27c8bb1ee989afdb80a83985"
},
"downloads": -1,
"filename": "swecc_email_sender-1.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ca05dec1bdef01be6fa116575fb3366",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 10177,
"upload_time": "2025-02-28T06:09:53",
"upload_time_iso_8601": "2025-02-28T06:09:53.628369Z",
"url": "https://files.pythonhosted.org/packages/31/2f/1cdcbcb42246edeb3a293b7c5a852ec232145de66901c9de466bb0d47466/swecc_email_sender-1.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4cc8e9926abb423e8f584b6b20abfbd69eb56337227aad69da39dca1aec11fa3",
"md5": "fa0a8e810f171ddba54a3e64a139394f",
"sha256": "a17ef66ba52804b529045de2b337d9698a29d6853c9a80f28b68a3041fe39d0b"
},
"downloads": -1,
"filename": "swecc_email_sender-1.0.6.tar.gz",
"has_sig": false,
"md5_digest": "fa0a8e810f171ddba54a3e64a139394f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 12013,
"upload_time": "2025-02-28T06:09:55",
"upload_time_iso_8601": "2025-02-28T06:09:55.134675Z",
"url": "https://files.pythonhosted.org/packages/4c/c8/e9926abb423e8f584b6b20abfbd69eb56337227aad69da39dca1aec11fa3/swecc_email_sender-1.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-28 06:09:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "swecc-uw",
"github_project": "swecc-email-sender",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "swecc-email-sender"
}