⭐️ If it helps you, please give a star.
English🌎 | 简体中文🀄
Added scheduled task functionality, which allows using cron expressions to periodically read results from an API or link and send emails. Supports configuring templates for JSON response APIs to convert JSON data into text for email content.
A gateway service that converts SMTP protocol to HTTP interfaces, helping developers:
- Avoid hardcoding SMTP configurations in code
- Dynamically send emails through REST API
- Visually configure multiple SMTP providers
- Use scheduled tasks to reduce email configuration in projects
- 🚀 Configure SMTP servers and recipient emails via Web UI
- 📦 Support for GET/POST/JSON request formats
- 🔒 Token-based API access control
- 📎 Multi-file attachment support (Base64 encoding/form upload)
- 🐳 Ready-to-use Docker image
- 📊 Send record query and statistics
- 📅 Scheduled task support for requesting links and sending emails
- 📧 Email template support
Welcome to join WeChat group or Telegram for more suggestions.
WeChat group:
Telegram:
https://t.me/+JClG9_DojaM0ZGE1
# Windows (PowerShell environment)
# Download package
Invoke-WebRequest -Uri "https://github.com/chuccp/http2smtp/releases/latest/download/http2smtp-windows-amd64.tar.gz" -OutFile "http2smtp-windows-amd64.tar.gz"
# Extract files
tar -zxvf http2smtp-windows-amd64.tar.gz
# Run program
.\http2smtp.exe
# Linux
# Download package (using wget for compatibility)
wget https://github.com/chuccp/http2smtp/releases/latest/download/http2smtp-linux-amd64.tar.gz
# Extract files
tar -zxvf http2smtp-linux-amd64.tar.gz
# Add execution permissions and run
chmod +x http2smtp
./http2smtp##use docker-compose(recommended)
cd docker
docker compose up -dor
docker pull cooge123/http2smtp
docker run -p 12566:12566 -p 12567:12567 -it --rm cooge123/http2smtpAfter startup, access the management page using the default port number: http://127.0.0.1:12566
After first startup, the configuration file config.ini is generated:
[core]
init = true ## Initialization switch, becomes true after initial configuration
cachePath = .cache ## Email attachment cache directory
dbType = sqlite ## Database type, supports sqlite and mysql
[sqlite]
filename = d-mail.db ## Database path
[manage]
port = 12566 ## Management port
username = 111111 ## Management username
password = 111111 ## Management password
webPath = web ## Management page path
[api]
port = 12567 ## API port
[mysql]
host = 127.0.0.1 ## Database address
port = 3306 ## Database port
dbname = d_mail ## Database name
charset = utf8 ## Database character set
username = root ## Database username
password = 123456 ## Database passwordPOST /sendMail
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| token | string | Yes | Authorization token |
| subject | string | No | Email subject |
| content | string | Yes | Email content |
| recipients | []string | No | Additional recipient list |
| files | []File | No | Attachment file list |
Successful Response:
okJSON Format (with attachments)
curl -X POST 'http://127.0.0.1:12567/sendMail' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "{{token}}",
"subject": "test",
"content": "this is a test",
"recipients": ["[email protected]"],
"files": [
{
"name": "alert.log",
"data": "{{base64_content}}"
}
]
}'Form Submission (with multiple attachments)
curl -X POST 'http://127.0.0.1:12567/sendMail' \
--form 'token={{token}}' \
--form 'subject=test' \
--form 'content=this is a test' \
--form '[email protected],[email protected]' \
--form 'files=@"/data/reports/sales.pdf"' \
--form 'files=@"/data/reports/expenses.xlsx"'GET Request Example
curl 'http://127.0.0.1:12567/sendMail?token={{token}}&subject=test&content=this%20is%20a%20test&[email protected],[email protected]'Compilation requires first building the frontend interface d-mail-view
This project is licensed under the Apache License 2.0.
See the LICENSE file for the full license text.