Email testing is an essential part of any email marketing campaign. It allows you to check the quality, functionality, and deliverability of your emails before you send them to your subscribers.

However, email testing can also be a frustrating and time-consuming process, and this is where local email testing can help.

Local email testing means that you send your emails from your local development environment to your own email address, or to a test email account. This way, you can see how your emails look and behave in different email clients and devices without affecting your actual subscribers – or your reputation.

Caveats with Traditional Email Testing

It’s important to be aware that email testing can come with some common problems or challenges, such as:

  • Spam filters: Your emails may end up in the spam folder or be blocked by the email provider due to various reasons, such as invalid sender address, poor content quality, suspicious links, etc.
  • Delay in SMTP servers: Your emails may not be sent or received at all due to the limitations or errors of the SMTP server that you use to send your emails locally. You may have to configure the SMTP settings manually or use a third-party service to send your emails.

These problems can make email testing a tedious and unreliable process. You may waste a lot of time and effort in testing your emails locally without getting the results that you want.

That’s why you need a better way to test your emails locally.

That’s where MailHog comes in.

By the end of this article, you will be able to use MailHog to test your emails locally with maximum effectiveness. This will significantly help you improve the quality, functionality, and deliverability of your emails before you send them to your subscribers. 

Are you ready to learn how to use MailHog to test your emails locally? Let’s get started!

What is MailHog?

MailHog is a simple and powerful tool that can transform your local email testing process. It can easily help you test your emails locally without any hassle or headache, and can help you fix the problems that you’re currently facing when testing your emails locally.

Why use MailHog?

Local email testing can help you improve the quality, functionality, and deliverability of your emails before you send them to your subscribers. It can also save you time and hassle in testing your emails. Here are some of the benefits of local email testing:

  • It is instantaneous: You don’t need to wait for network delays or server issues to see how your emails look and behave. You can test your emails in real time and get immediate feedback.
  • It saves email quota. Sending too many emails might reduce your spam score or trigger spam filters. By testing your emails locally, you can avoid wasting your email quota or damaging your email reputation.
  • It prevents accidentally sending to real customers if there is a bug in your code. Sometimes, you may have errors or typos in your code that could cause your emails to be sent to the wrong recipients or with the wrong content. By testing your emails locally, you can catch these mistakes before they cause any harm or embarrassment.
  • It allows you to simulate situations where the communication between your program and the email server is interrupted or degraded due to various reasons, such as network congestion, packet loss, latency, etc. These faults can cause your emails to be delayed, corrupted, or lost. By testing emails locally you can create and control these network faults and test how your program behaves under these conditions.

Jim: The Chaos Monkey 

MailHog comes with an interesting extension, Jim – a chaos monkey. It’s a tool that simulates random failures and disruptions in your email system. This is useful for testing the resilience and reliability of your email system, as well as your ability to handle, and recover from, unexpected errors.

By inviting Jim to your email testing, you can expose and fix any weaknesses or vulnerabilities in your email system. You can also learn how to build better automatic recovery mechanisms, and improve the quality, functionality, and deliverability of your emails.

For example, you can test how your program handles the following scenarios:

  • Rejecting incoming connections with a certain probability 
  • Disconnecting sessions randomly 
  • Applying a rate limit to connections 
  • Rejecting authentication attempts 
  • Rejecting a sender’s or recipient’s address 

By using these tools, you can see how your program reacts to different types of network faults – and whether it can recover from them gracefully. You can also improve your error handling and logging mechanisms and make your program more robust and resilient.

How To Use MailHog 

Here is a step-by-step guide on how to install and set up MailHog on your local machine, and configure it to capture and display the emails that you send from your application:

  1. Download MailHog from its GitHub repository. You can choose the version that suits your operating system and architecture. For example, if you are using Windows 10 64-bit, you can download the file named mailhog_windows_amd64.exe.
  2. Save the downloaded file in a folder of your choice. For example, you can create a folder named mailhog in your C:\ drive and save the file there.
  3. Open a command prompt window and navigate to the folder where you saved the MailHog file. For example, you can type cd C:\mailhog and press ‘Enter’.
  4. Run the MailHog file by typing its name and pressing ‘Enter’. For example, you can type mailhog_windows_amd64.exe and press ‘Enter’. You should see a message saying that MailHog is listening on port 1025 for SMTP and port 8025 for HTTP.
  1. Open a web browser and go to http://localhost:8025. You should see the MailHog web interface, which shows the list of emails that MailHog has captured.
  1.  Configure your application to send emails to MailHog instead of your actual SMTP server. You can do this by changing the SMTP settings in your application to use localhost as the host name and 1025 as the port number.
    You can also use any username and password for authentication, as MailHog doesn’t check them. 

For WordPress Sites

There are many WordPress plugins that allow you to send emails using a specific mail server. You can configure them to use MailHog to test your email. After sending the email, you can view the email in the MailHog dashboard.

For Generic PHP Applications

If you are using PHPMailer to send emails from your PHP application, you can use the following code snippet to send emails to MailHog server:

<?php
// Load PHPMailer library
require 'PHPMailerAutoload.php';
// Create a new PHPMailer instance
$mail = new PHPMailer;
// Set Mailer to use SMTP
$mail->isSMTP();
// Set SMTP host name
$mail->Host = 'localhost';
// Set SMTP port number
$mail->Port = 1025;
// Set SMTP username
$mail->Username = 'anyusername';
// Set SMTP password
$mail->Password = 'anypassword';
// Set email subject
$mail->Subject = 'Test email from MailHog';
// Set email body
$mail->Body = 'This is a test email sent from MailHog';
// Set email sender address
$mail->setFrom('[email protected]', 'Sender Name');
// Set email recipient address
$mail->addAddress('[email protected]', 'Recipient Name');
// Send email
if ($mail->send()) {
    echo 'Email sent successfully';
} else {
    echo 'Email sending failed: ' . $mail->ErrorInfo;
} ?>
  1. Test your application by sending an email from it. You should see the email appear in the MailHog web interface. You can also open the email and check its content, layout, design, attachments, links, etc.
MailHog dashboard

Conclusion

MailHog is a simple and powerful tool that can transform your local email testing process. In this article we have shown how to use MailHog to test your emails locally and fix the common problems or challenges that developers face when testing emails locally, such as spam filters, email clients, SMTP servers, etc.

If you are looking for a great cloud management platform that saves time and doesn’t require you to be a Linux expert, we recommend you check out RunCloud.

RunCloud is a modern web server panel designed to help you manage your PHP web applications and websites.

With RunCloud, you don’t need to be a Linux expert to build a website, and you can host it on a cloud provider of your choice such as Vultr, Linode, UpCloud, Hetzner, AWS, Google Cloud or DigitalOcean.

Start your free trial today and see for yourself how RunCloud can make your cloud hosting experience easier and better.