mirror of
https://github.com/HeyPuter/puter.git
synced 2026-01-07 13:40:51 -06:00
- Clarified that the Nodemailer example is for testing MailHog setup\n- Added information about how Puter uses Nodemailer\n- Added references to the EmailService class ai: true
106 lines
3.1 KiB
Markdown
106 lines
3.1 KiB
Markdown
# Local Email Testing
|
|
|
|
This guide describes how to set up and use [MailHog](https://github.com/mailhog/MailHog) for local email testing in Puter development. MailHog provides a local email server that captures outgoing emails for testing purposes without actually sending them to real recipients.
|
|
|
|
## Setup
|
|
|
|
### 1. Configure Puter
|
|
|
|
Add the following configuration to your `volatile/config/config.json` file:
|
|
|
|
```json
|
|
"email": {
|
|
"host": "localhost",
|
|
"port": 1025
|
|
}
|
|
```
|
|
|
|
### 2. Install MailHog
|
|
|
|
Download and run MailHog on your local machine:
|
|
|
|
```bash
|
|
# Install MailHog
|
|
wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
|
|
chmod +x MailHog_linux_amd64
|
|
./MailHog_linux_amd64
|
|
```
|
|
|
|
### 3. Install Nodemailer
|
|
|
|
Install Nodemailer to send test emails to the SMTP server:
|
|
|
|
```bash
|
|
npm install nodemailer
|
|
```
|
|
|
|
## Using MailHog
|
|
|
|
### Access Web Interface
|
|
|
|
Once MailHog is running, access the web interface at:
|
|
[http://127.0.0.1:8025/](http://127.0.0.1:8025/)
|
|
|
|
All captured emails and their recipients will be displayed in this interface.
|
|
|
|
### Testing Your MailHog Setup with Nodemailer
|
|
|
|
You can verify that your MailHog instance is working correctly by creating a simple test script using Nodemailer. This allows you to send test emails that will be captured by MailHog without actually delivering them to real recipients.
|
|
|
|
Here's a sample script you can use to test your MailHog setup:
|
|
|
|
```javascript
|
|
import nodemailer from "nodemailer";
|
|
|
|
// Configure transporter to use MailHog
|
|
const transporter = nodemailer.createTransport({
|
|
host: "localhost", // MailHog SMTP server address
|
|
port: 1025, // Default MailHog SMTP port
|
|
secure: false // No SSL/TLS required for MailHog
|
|
});
|
|
|
|
// Define a test email
|
|
const mailOptions = {
|
|
from: "no-reply@example.com",
|
|
to: "test@example.com",
|
|
subject: "Hello from Nodemailer!",
|
|
text: "This is a test email sent using Nodemailer."
|
|
};
|
|
|
|
// Send the test email
|
|
transporter.sendMail(mailOptions)
|
|
.then(info => console.log("Email sent:", info.response))
|
|
.catch(error => console.error("Error:", error));
|
|
```
|
|
|
|
After sending an email with this script, you can view it in the MailHog web interface:
|
|
|
|
### How Puter Uses Nodemailer
|
|
|
|
Puter itself uses Nodemailer for sending emails through its `EmailService` class located in `/src/backend/src/services/EmailService.js`. This service handles various email templates for:
|
|
|
|
- Account verification
|
|
- Password recovery
|
|
- Two-factor authentication notifications
|
|
- File sharing notifications
|
|
- App approval notifications
|
|
- And more
|
|
|
|
The service creates a Nodemailer transport using the configuration from your `config.json` file, which is why setting up MailHog correctly is important for testing Puter's email functionality during development.
|
|
|
|
<img src="image.png" alt="Email in MailHog interface" width="300" height="200">
|
|
|
|
## Troubleshooting
|
|
|
|
If you encounter issues with MailHog:
|
|
|
|
1. Check if MailHog is running:
|
|
```bash
|
|
ps aux | grep MailHog
|
|
```
|
|
|
|
2. Ensure the correct port configurations in both MailHog and your application.
|
|
|
|
3. Check for any error messages in the MailHog console output.
|
|
|