Mymailer
A tiny bulk mailing service
Install / Use
/learn @lowdigital/MymailerREADME
📧 MyMailer
MyMailer is a modern email campaign management system with a beautiful dark UI, no database required.
✨ Features
- Modern Dark UI — Beautiful responsive interface with gradient accents
- Campaign Management — Create, edit, delete email campaigns
- HTML Editor — Visual template editor with live preview and syntax highlighting
- Attachments — Attach files to your emails with drag & drop
- Browser-based Sending — Send emails directly from browser with visual progress
- Open Tracking — Track email opens with invisible pixel
- Click Tracking — Track all link clicks with detailed statistics
- Analytics Dashboard — View open rates, click rates, popular links
- Unsubscribe System — Automatic unsubscribe handling with global blocklist
- Flexible Settings — SMTP configuration, sending speed, admin password
- No Database — All data stored in files (JSON, TXT)
- Secure — Password-protected admin panel
📁 Project Structure
mymailer/
├── index.php # Redirect to admin panel
├── config.php # Configuration functions
├── config.json # Settings (auto-created)
├── .htaccess # Security rules
├── unsubscribed.txt # Global unsubscribe list
├── unsubscribe.html # Unsubscribe page
├── unsubscribe.php # Unsubscribe handler
├── link.php # Email open & click tracking
│
├── admin/ # Admin Panel
│ ├── index.php # Dashboard (campaign list)
│ ├── campaign.php # Campaign management
│ ├── send.php # Sending page
│ └── settings.php # System settings
│
├── campaigns/ # Campaigns directory
│ └── {UUID}/ # Campaign folder
│ ├── options.json # Campaign settings
│ ├── list.txt # Recipients list
│ ├── template.html # Email HTML template
│ ├── attachments/ # Email attachments
│ └── log/
│ ├── send.txt # Send log
│ ├── error.txt # Error log
│ ├── unsubscribe.txt # Unsubscribe log
│ ├── opens.txt # Email opens log
│ └── clicks.txt # Link clicks log
│
├── PHPMailer/ # PHPMailer library
│ ├── PHPMailer.php
│ ├── SMTP.php
│ └── Exception.php
│
└── README.md
🚀 Installation
Requirements
- PHP 7.4 or higher
- Web server (Apache, Nginx)
- SMTP server for sending emails
Quick Start
- Clone the repository:
git clone https://github.com/your-username/mymailer.git
- Upload to your web server
Copy all files to your web server directory.
- Set permissions:
chmod 755 campaigns/
chmod 644 config.json unsubscribed.txt
- Open in browser:
https://your-domain.com/mymailer/
- Login to admin panel:
Default password: admin123
- Configure SMTP:
Go to Settings → SMTP Settings and enter your mail server details.
⚙️ Configuration
SMTP Settings
| Parameter | Description |
|-----------|-------------|
| SMTP Host | SMTP server address (e.g., smtp.gmail.com) |
| Port | 465 for SSL, 587 for TLS |
| Email | Sender email address |
| Password | Email account password |
| From Name | Sender name visible to recipients |
Sending Settings
| Parameter | Description | Default | |-----------|-------------|---------| | Emails per step | Number of emails sent per iteration | 10 | | Timeout | Pause between iterations (seconds) | 5 |
Template Variables
Available variables in HTML email template:
| Variable | Description |
|----------|-------------|
| [LINK_UNSUBSCRIBE] | Unsubscribe link |
Tracking
Email tracking is automatically enabled for all campaigns:
- Open Tracking: Invisible 1x1 pixel added before
</body> - Click Tracking: All links (except unsubscribe, mailto, tel) are wrapped with tracking URLs
- Statistics: View open rates, click rates, and popular links in the "Statistics" tab
📝 Usage
Creating a Campaign
- Open admin panel (
/admin/) - Click "New Campaign"
- Enter campaign name and email subject
- Add recipients (tab "Recipients")
- Create email template (tab "Template")
- Optionally attach files (tab "Attachments")
- Click "Start Campaign"
Sending Emails
- Emails are sent in browser — don't close the tab!
- Page auto-refreshes showing progress
- If error occurs, sending continues with next address
- You can pause by closing the page
Unsubscribe System
- Unsubscribed emails are added to global
unsubscribed.txt - This list is checked for all campaigns
- Edit list in Settings → Global Unsubscribe List
🔧 Additional Info
Popular SMTP Servers
Gmail:
Host: smtp.gmail.com
Port: 465 (SSL) or 587 (TLS)
⚠️ For Gmail, enable "Less secure apps" or use App Password
Outlook/Office365:
Host: smtp.office365.com
Port: 587 (TLS)
Amazon SES:
Host: email-smtp.{region}.amazonaws.com
Port: 465 (SSL) or 587 (TLS)
Deliverability Tips
- ✅ Use your own domain for sending
- ✅ Set up SPF, DKIM, and DMARC records
- ✅ Don't send too many emails at once
- ✅ Always include unsubscribe link
[LINK_UNSUBSCRIBE] - ✅ Use quality content without spam triggers
RFC Compliance
System automatically adds headers:
List-Unsubscribe— RFC 2369List-Unsubscribe-Post— RFC 8058 (one-click unsubscribe)Precedence: bulk— Bulk mail marker
🔒 Security
.htaccessprotects sensitive files (JSON configs, campaigns data)- Admin panel requires password authentication
- Email validation prevents injection attacks
- All actions are logged
📄 License
MIT License — free for personal and commercial use.
Third-Party Licenses
This project includes the following third-party libraries:
| Library | Version | License | Link | |---------|---------|---------|------| | PHPMailer | 6.x | LGPL-2.1 | GitHub |
PHPMailer
PHPMailer is licensed under the GNU Lesser General Public License v2.1 (LGPL-2.1).
- Authors: Marcus Bointon, Jim Jagielski, Andy Prevost, Brent R. Matzelle
- Copyright: 2012-2017 Marcus Bointon, 2010-2012 Jim Jagielski, 2004-2009 Andy Prevost
- License URL: http://www.gnu.org/copyleft/lesser.html
⚠️ Note: LGPL allows commercial use without requiring your code to be open source, as long as PHPMailer is used as a library and not modified. If you modify PHPMailer itself, those modifications must be released under LGPL.
Contacts
Follow updates on the Telegram channel: low digital.
