<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Denys</title>
    <description>The latest articles on Forem by Denys (@denyskontorskyy).</description>
    <link>https://forem.com/denyskontorskyy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1189299%2F60646cd7-9259-42b7-b8c9-23faf0235c1f.jpg</url>
      <title>Forem: Denys</title>
      <link>https://forem.com/denyskontorskyy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/denyskontorskyy"/>
    <language>en</language>
    <item>
      <title>Send Emails with Windsurf and Mailtrap</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Thu, 28 Aug 2025 11:15:21 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/send-emails-with-windsurf-and-mailtrap-3h4n</link>
      <guid>https://forem.com/denyskontorskyy/send-emails-with-windsurf-and-mailtrap-3h4n</guid>
      <description>&lt;p&gt;Learn how to seamlessly integrate Mailtrap with Windsurf to send transactional emails using simple AI prompts. &lt;/p&gt;

&lt;p&gt;This article provides a comprehensive guide based on Mailtrap's official tutorial on &lt;a href="https://help.mailtrap.io/article/178-send-email-with-windsurf" rel="noopener noreferrer"&gt;how to send emails in Windsurf.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Before we start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Required accounts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Windsurf account - to access the AI-powered development environment&lt;/li&gt;
&lt;li&gt;Mailtrap account - to send emails&lt;/li&gt;
&lt;li&gt;Node.js - latest version installed for MCP server functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites setup
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Verify your email sending domain - Mailtrap requires domain verification before you can send emails. This process takes approximately 5 minutes and ensures optimal deliverability rates. Follow &lt;a href="https://help.mailtrap.io/article/69-sending-domain-setup" rel="noopener noreferrer"&gt;Mailtrap's domain setup guide&lt;/a&gt; for detailed instructions.&lt;/li&gt;
&lt;li&gt;Get your API Token - Navigate to your Mailtrap dashboard and obtain an API token with appropriate permissions for your sending domain and email operations.&lt;/li&gt;
&lt;li&gt;Install Windsurf - Download and install the latest version of Windsurf from &lt;a href="https://windsurf.com/" rel="noopener noreferrer"&gt;windsurf.com&lt;/a&gt; to ensure compatibility with all MCP features.&lt;/li&gt;
&lt;li&gt;Update Node.js - Ensure you have the latest Node.js version installed, as the Mailtrap MCP server runs as a Node.js command line utility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Important Note: The integration uses &lt;a href="https://mailtrap.io/email-mcp-server/" rel="noopener noreferrer"&gt;Mailtrap's MCP server&lt;/a&gt;, which provides a seamless interface between Windsurf's AI capabilities and Mailtrap's email infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Mailtrap Integration with Windsurf
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Add Mailtrap MCP to Windsurf
&lt;/h3&gt;

&lt;p&gt;Begin by configuring the MCP server connection in Windsurf:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Windsurf Settings

&lt;ul&gt;
&lt;li&gt;Launch Windsurf application&lt;/li&gt;
&lt;li&gt;Navigate to Settings → Windsurf Settings&lt;/li&gt;
&lt;li&gt;This will open the main configuration panel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Access MCP Configuration

&lt;ul&gt;
&lt;li&gt;Look for the Manage MCPs button in the settings panel&lt;/li&gt;
&lt;li&gt;Click on it to open the mcp.config.json file&lt;/li&gt;
&lt;li&gt;This file controls all Model Context Protocol integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add Mailtrap MCP Configuration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Insert the following configuration into your mcp.config.json file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mailtrap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-mailtrap"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"MAILTRAP_API_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your_mailtrap_api_token"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"DEFAULT_FROM_EMAIL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your_sender@example.com"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration establishes the connection between Windsurf and Mailtrap's email services through the MCP protocol.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Configure Mailtrap API Credentials
&lt;/h3&gt;

&lt;p&gt;Replace the placeholder values in your configuration with your actual Mailtrap credentials:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MAILTRAP_API_TOKEN Configuration

&lt;ul&gt;
&lt;li&gt;Navigate to your Mailtrap dashboard&lt;/li&gt;
&lt;li&gt;Go to Sending Domains → Integration → API&lt;/li&gt;
&lt;li&gt;Copy your API token from the credentials tab&lt;/li&gt;
&lt;li&gt;Ensure the token has appropriate permissions for email sending&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DEFAULT_FROM_EMAIL Setup

&lt;ul&gt;
&lt;li&gt;Use an email address from your verified sending domain&lt;/li&gt;
&lt;li&gt;The domain must match exactly with your verified domain in Mailtrap&lt;/li&gt;
&lt;li&gt;Format: &lt;a href="mailto:sender@your-verified-domain.com"&gt;sender@your-verified-domain.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Verify Domain Matching

&lt;ul&gt;
&lt;li&gt;Check your Sending Domains tab in Mailtrap&lt;/li&gt;
&lt;li&gt;Ensure the email domain you're using is verified and active&lt;/li&gt;
&lt;li&gt;Mismatched domains will result in delivery failures&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Important: After updating your credentials, restart Windsurf to ensure all changes take effect properly. This prevents any caching issues with the MCP server connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Enable Mailtrap MCP in Windsurf
&lt;/h3&gt;

&lt;p&gt;Activate the Mailtrap integration within your Windsurf workspace:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Cascade Sidebar

&lt;ul&gt;
&lt;li&gt;Locate the Cascade panel in the upper-right corner of Windsurf&lt;/li&gt;
&lt;li&gt;This is where you'll interact with AI assistance and MCP servers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Enable Mailtrap MCP Server

&lt;ul&gt;
&lt;li&gt;Look for Customizations section in the Cascade sidebar&lt;/li&gt;
&lt;li&gt;Find the Mailtrap MCP server in the available integrations&lt;/li&gt;
&lt;li&gt;Toggle it to enabled status&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Verify Connection Status

&lt;ul&gt;
&lt;li&gt;The enabled MCP server should show as connected&lt;/li&gt;
&lt;li&gt;You may see a green indicator or status message&lt;/li&gt;
&lt;li&gt;If connection fails, double-check your API credentials&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Send Your First Email with Windsurf and Mailtrap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Basic email sending
&lt;/h3&gt;

&lt;p&gt;With your integration configured, you can now send emails using natural language prompts. Example Prompt:&lt;br&gt;
&lt;code&gt;Send an email to john.doe@example.com with the subject 'Welcome to our service' and a message thanking them for signing up.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Windsurf will interpret this prompt and execute the email sending through Mailtrap automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Advanced email features
&lt;/h3&gt;

&lt;p&gt;Leverage more sophisticated email functionality with detailed prompts. HTML Email Example:&lt;br&gt;
&lt;code&gt;Send an HTML email to customer@example.com with the subject 'Monthly Newsletter' including a header with our company logo, a welcome message, and a call-to-action button linking to our website.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Multiple Recipients Example:&lt;br&gt;
&lt;code&gt;Send a notification email to team@company.com and manager@company.com with the subject 'Project Update' and a status report about the current development progress.&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Verify Email Delivery
&lt;/h3&gt;

&lt;p&gt;After sending emails through Windsurf, confirm successful delivery:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check Windsurf Confirmation

&lt;ul&gt;
&lt;li&gt;Windsurf will display a success message after email execution&lt;/li&gt;
&lt;li&gt;Review the prompt response for any error messages&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Monitor Mailtrap Dashboard

&lt;ul&gt;
&lt;li&gt;Navigate to Email Logs in your Mailtrap account&lt;/li&gt;
&lt;li&gt;Verify the email appears in the sent logs&lt;/li&gt;
&lt;li&gt;Check delivery status and any bounce notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Test Email Receipt

&lt;ul&gt;
&lt;li&gt;Check the recipient's inbox for successful delivery&lt;/li&gt;
&lt;li&gt;Verify email formatting and content accuracy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Windsurf Email Integration Best Practices
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Environment Management
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Store sensitive API tokens securely in the MCP configuration&lt;/li&gt;
&lt;li&gt;Regularly rotate your Mailtrap API tokens&lt;/li&gt;
&lt;li&gt;Never commit API credentials to version control systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Domain Verification
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Always use verified sending domains to ensure high deliverability&lt;/li&gt;
&lt;li&gt;Monitor your domain reputation through Mailtrap analytics&lt;/li&gt;
&lt;li&gt;Keep DNS records updated and properly configured&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sender Reputation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use consistent sender addresses from verified domains&lt;/li&gt;
&lt;li&gt;Monitor bounce rates and spam complaints in Mailtrap dashboard&lt;/li&gt;
&lt;li&gt;Maintain clean recipient lists to avoid delivery issues&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Content Quality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Craft clear, relevant subject lines to improve open rates&lt;/li&gt;
&lt;li&gt;Use proper HTML structure for formatted emails&lt;/li&gt;
&lt;li&gt;Include both HTML and plain text versions when possible&lt;/li&gt;
&lt;li&gt;Avoid spam trigger words and excessive promotional content&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prompt Engineering
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start with simple email prompts and gradually increase complexity&lt;/li&gt;
&lt;li&gt;Be specific about recipient, subject, and message content&lt;/li&gt;
&lt;li&gt;Use descriptive language for HTML formatting requirements&lt;/li&gt;
&lt;li&gt;Test prompts iteratively to refine email output&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summing up
&lt;/h2&gt;

&lt;p&gt;This comprehensive guide demonstrates how to integrate Mailtrap Email Delivery Platform with Windsurf using MCP server. The integration enables developers to send transactional emails through natural language prompts without complex coding.&lt;/p&gt;

</description>
      <category>windsurf</category>
      <category>mailtrap</category>
      <category>emails</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Send Emails with Lovable and Mailtrap</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Thu, 21 Aug 2025 08:23:41 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/send-emails-with-lovable-and-mailtrap-4ho6</link>
      <guid>https://forem.com/denyskontorskyy/send-emails-with-lovable-and-mailtrap-4ho6</guid>
      <description>&lt;p&gt;Learn how to integrate Mailtrap with your Lovable application to send transactional emails, manage contacts, and create powerful email workflows without writing complex code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lovable.dev/" rel="noopener noreferrer"&gt;Lovable&lt;/a&gt; is a platform that allows you to create everything from contact forms to whole websites and apps, all by using simple prompts. Combined with Mailtrap's robust email infrastructure, you can build sophisticated email functionality into your applications with ease.&lt;/p&gt;

&lt;p&gt;This article is based on Mailtrap's official tutorial on &lt;a href="https://help.mailtrap.io/article/173-send-email-with-lovable" rel="noopener noreferrer"&gt;how to send email using Lovable&lt;/a&gt; and &lt;a href="https://docs.lovable.dev/integrations/resend" rel="noopener noreferrer"&gt;Lovable’s tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before we start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Required accounts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Lovable account - to create contact forms and generate logic&lt;/li&gt;
&lt;li&gt;Mailtrap account - to send emails and manage contacts&lt;/li&gt;
&lt;li&gt;Supabase account - to securely store API keys and manage your database&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites setup
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Verify your email sending domain - Mailtrap allows you to send emails only from a verified domain. &lt;a href="https://help.mailtrap.io/article/69-sending-domain-setup" rel="noopener noreferrer"&gt;Follow this guide&lt;/a&gt; to set up domain verification.&lt;/li&gt;
&lt;li&gt;Get your API Token - Ensure your &lt;a href="https://mailtrap.io/api-tokens" rel="noopener noreferrer"&gt;API Token&lt;/a&gt; has admin access level to your domain and contacts.&lt;/li&gt;
&lt;li&gt;Create Custom Fields (if needed) - Set up &lt;a href="https://mailtrap.io/contacts/fields" rel="noopener noreferrer"&gt;Custom fields&lt;/a&gt; in Mailtrap if your forms have additional inputs you want to save.&lt;/li&gt;
&lt;li&gt;Find your Account ID - You'll need this for creating contacts in Mailtrap. Find it in your &lt;a href="https://mailtrap.io/account-management" rel="noopener noreferrer"&gt;Account Management&lt;/a&gt; section.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Important Note: The prompts provided are based on our experience with Lovable and GPT-5 as of August 2025. Since both Lovable and LLM models constantly evolve, you may need to adjust these prompts for your specific needs.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Mailtrap SMTP/Email API with Lovable
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Set up basic email sending
&lt;/h3&gt;

&lt;p&gt;Start with this prompt in Lovable to create a simple email sending functionality:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Email should be sent via Mailtrap.io, as I have an account there.
- My Mailtrap verified domain is [your-domain.com]
- I want to send emails from hello@[your-domain.com]
- Save my Mailtrap API key in MAILTRAP_API_KEY secret.
- Include and use Mailtrap NodeJS SDK https://www.npmjs.com/package/mailtrap to send emails. Use the latest available version of the npm package.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This basic setup will configure Mailtrap integration and prepare your environment for email sending.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Manage Mailtrap Contacts automatically
&lt;/h3&gt;

&lt;p&gt;Enhance your setup to automatically add form submissions to Mailtrap Contacts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Pass all my new users/form submissions to Mailtrap contacts.
- Use the latest version of Mailtrap NodeJS SDK to add contacts.
- My MAILTRAP_ACCOUNT_ID env variable.
- Use the same Token I use for production mode of Mailtrap, as it can also create Contacts.
- Pass the name from my form to name field in Mailtrap. Add users to MAILTRAP_LIST_ID.
- Create contacts table in Supabase with columns: id (UUID, primary key), name (text), email (text), message (text), created_at (timestamp), mailtrap_contact_id (text)
- Apply Supabase Row-Level Security (RLS) to restrict access to only authenticated users.
- Save form contacts info from submissions in DB and use Mailtrap NodeJS SDK to create a contact in Mailtrap.
- Save Mailtrap contact_id to mailtrap_contact_id column in contacts table.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Locate Your Mailtrap List ID (Optional)
&lt;/h3&gt;

&lt;p&gt;If you want to add contacts to a specific list in Mailtrap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your List by clicking on it in Mailtrap&lt;/li&gt;
&lt;li&gt;Check the URL - it will look like: &lt;a href="https://mailtrap.io/contacts?filters=%5B%7B%22name%22:%22list_id%22,%22operator%22:%22equal%22,%22value%22:%5B23%5D%7D%5D" rel="noopener noreferrer"&gt;https://mailtrap.io/contacts?filters=%5B%7B%22name%22:%22list_id%22,%22operator%22:%22equal%22,%22value%22:%5B23%5D%7D%5D&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://www.urldecoder.org/" rel="noopener noreferrer"&gt;URL Decoder&lt;/a&gt; to decode the URL&lt;/li&gt;
&lt;li&gt;Find your list ID in the decoded URL (in this example, it's 23)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Build a landing page in Lovable
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1. Connect to Supabase
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In your Lovable project, click the Supabase icon in the upper-right corner&lt;/li&gt;
&lt;li&gt;Enter your project name, password, and choose your preferred region&lt;/li&gt;
&lt;li&gt;Click "Create new project" to establish the connection
### Step 2. Create a landing page
Use this comprehensive prompt to build a complete SaaS landing page with email functionality:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a SaaS landing page with a contact form that collects the full name, email address, and message.

My SaaS is called [YourCompanyName], which helps customers [your value proposition]. Our form will capture leads who want to learn more about our services.

My landing page should have this structure:
- Hero section describing benefits with a button that scrolls to the form
- Testimonials/social proof/case studies section  
- Contact form
- About section
- Contact Info section
- Links to social networks

Make sure this form works like this:
- Add browser validation for the email input in the form, so only a valid email will pass
- Add minimum length of 50 characters for message field, and maximum length of 100 characters for Name input
- As a customer submits a form:
  - Send an email with form content to my email MAILTRAP_MY_EMAIL secret variable
  - Emails should be sent from form-submissions@[your-verified-domain.com] (MAILTRAP_FROM_EMAIL)
  - Create a contact in Mailtrap (name, email)
  - Pass value from form's "Full name" input to Mailtrap's custom field name
  - Add form submission info to Supabase contacts table
  - Display submission confirmation to visitor
  - Apply Supabase Row-Level Security (RLS) to restrict access to authenticated users

- Email should be sent via Mailtrap using:
  - My Mailtrap account MAILTRAP_ACCOUNT_ID (store in Supabase Secrets)  
  - Mailtrap NodeJS SDK for creating contacts and sending emails
  - Save Mailtrap API key in MAILTRAP_API_KEY secret

Plan step-by-step, verify results after each step. Write code in Typescript, generate atomic files in the Supabase Edge function for easier debugging.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3. Configure your Mailtrap secrets
&lt;/h3&gt;

&lt;p&gt;After Lovable creates your application, add these secrets in your Supabase project:&lt;/p&gt;

&lt;p&gt;MAILTRAP_ACCOUNT_ID=your_account_id&lt;br&gt;
MAILTRAP_API_KEY=your_api_key&lt;br&gt;&lt;br&gt;
MAILTRAP_MY_EMAIL=&lt;a href="mailto:your-email@example.com"&gt;your-email@example.com&lt;/a&gt;&lt;br&gt;
MAILTRAP_FROM_EMAIL=&lt;a href="mailto:form-submissions@your-verified-domain.com"&gt;form-submissions@your-verified-domain.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test your Mailtrap SMTP/Email API integration
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Submit a test form on your landing page&lt;/li&gt;
&lt;li&gt;Check for confirmation message display&lt;/li&gt;
&lt;li&gt;Verify the contact appears in your Mailtrap Contacts&lt;/li&gt;
&lt;li&gt;Confirm you receive the notification email&lt;/li&gt;
&lt;li&gt;Review the entry in your Mailtrap Email Logs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Lovable email sending best practices
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Always store sensitive information in Supabase Secrets, never in code&lt;/li&gt;
&lt;li&gt;Enable Row-Level Security (RLS) on all database tables&lt;/li&gt;
&lt;li&gt;Regularly rotate your API keys&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Email deliverability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use a verified domain for all outgoing emails&lt;/li&gt;
&lt;li&gt;Monitor your sender reputation in Mailtrap&lt;/li&gt;
&lt;li&gt;Keep your contact lists clean and up-to-date&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  User experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Provide clear feedback when forms are submitted&lt;/li&gt;
&lt;li&gt;Include proper validation messages&lt;/li&gt;
&lt;li&gt;Consider adding loading states during submission&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use Supabase Edge Functions for server-side logic&lt;/li&gt;
&lt;li&gt;Implement proper error handling&lt;/li&gt;
&lt;li&gt;Consider rate limiting for form submissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pro Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Avoid Supabase email limits: to bypass Supabase's hourly email sending limits, configure your Supabase project's SMTP settings to use Mailtrap. &lt;a href="https://help.mailtrap.io/article/165-supabase-and-mailtrap-integration" rel="noopener noreferrer"&gt;Follow this integration guide&lt;/a&gt; for detailed instructions.&lt;/li&gt;
&lt;li&gt;Prompt optimization: Start with basic functionality and iteratively improve your prompts. Lovable works best when you build features step-by-step rather than trying to create everything at once.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that you have basic email functionality set up, consider expanding your application with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Authentication: Add login/signup flows with email verification&lt;/li&gt;
&lt;li&gt;Email templates: Create branded email templates for different types of messages. You can use Mailtrap's &lt;a href="https://mailtrap.io/email-builder/" rel="noopener noreferrer"&gt;free email builder&lt;/a&gt; for that.&lt;/li&gt;
&lt;li&gt;Advanced analytics: Track email open rates, click-through rates, and conversions&lt;/li&gt;
&lt;li&gt;Multi-step forms: Break complex forms into smaller steps for better user experience&lt;/li&gt;
&lt;li&gt;A/B Testing: Test different email subject lines and content to optimize engagement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Lovable and Mailtrap working together, you have a powerful foundation for building email-driven applications that can scale with your business needs.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>emailmarketing</category>
      <category>lovable</category>
      <category>mailtrap</category>
    </item>
    <item>
      <title>How to Send Emails in VS Code with Mailtrap MCP Server</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Fri, 08 Aug 2025 09:01:35 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/how-to-send-emails-in-vs-code-with-mailtrap-mcp-server-24gc</link>
      <guid>https://forem.com/denyskontorskyy/how-to-send-emails-in-vs-code-with-mailtrap-mcp-server-24gc</guid>
      <description>&lt;p&gt;Besides having an AI editor to help you develop projects, VS Code can now also generate and send emails in your stead.&lt;/p&gt;

&lt;p&gt;To do this, you simply need to integrate VS Code with &lt;a href="https://github.com/railsware/mailtrap-mcp" rel="noopener noreferrer"&gt;Mailtrap MCP&lt;/a&gt; and you’ll be able to send emails with a single prompt. And yes, this works for both Windows and macOS.&lt;/p&gt;

&lt;p&gt;First, we’ll set up the MCP server, and then we’ll send emails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before we start:&lt;/strong&gt; &lt;a href="https://mailtrap.io/email-mcp-server/" rel="noopener noreferrer"&gt;Mailtrap MCP server&lt;/a&gt; is implemented as a Node.js command line utility, so please install the &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;latest Node.js version&lt;/a&gt; alongside the freshest version of &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VS Code editor&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup Mailtrap MCP Server
&lt;/h2&gt;

&lt;p&gt;First, we’ll set up and configure an MCP Server in &lt;strong&gt;VS Code&lt;/strong&gt;. So, open your &lt;strong&gt;VS Code editor&lt;/strong&gt;, navigate to &lt;strong&gt;Settings&lt;/strong&gt;, and use the search bar to find the &lt;strong&gt;Mcp tab&lt;/strong&gt;. Then, tick the &lt;strong&gt;Chat&amp;gt; Mcp: Enabled&lt;/strong&gt; option and click on &lt;strong&gt;Edit in settings.json&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgojzfpzcgcqdd5uguyy3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgojzfpzcgcqdd5uguyy3.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will open the &lt;strong&gt;settings.json&lt;/strong&gt; file, which is used by VS Code to store the user settings and the MCP servers that you can make requests to. So, delete everything you find inside it and insert the following code snippet there:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "mcp": {
    "servers": {
      "mailtrap": {
        "command": "npx",
        "args": ["-y", "mcp-mailtrap"],
        "env": {
          "MAILTRAP_API_TOKEN": "your_mailtrap_api_token",
          "DEFAULT_FROM_EMAIL": "your_sender@example.com"
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we have added a new &lt;strong&gt;Mailtrap MCP&lt;/strong&gt; configuration in the &lt;strong&gt;servers&lt;/strong&gt; property, located inside the &lt;strong&gt;mcp property&lt;/strong&gt;. However, if you have &lt;strong&gt;mcp-server-time&lt;/strong&gt; in the &lt;strong&gt;servers&lt;/strong&gt; configuration, you can either remove it, or install the &lt;strong&gt;mcp_server_time&lt;/strong&gt; package to avoid errors when MCPs are loaded. If you want to install, you can do that by using the &lt;a href="https://pypi.org/project/pip/" rel="noopener noreferrer"&gt;pip package manager&lt;/a&gt; (you will need &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python installed&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install mcp_server_time&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Essentially, VS Code can now use &lt;a href="https://mailtrap.io/email-api/" rel="noopener noreferrer"&gt;Mailtrap Email API&lt;/a&gt; to send emails. All there’s left to do is log in to your Mailtrap account, navigate to &lt;strong&gt;Sending Domains → Integration → API&lt;/strong&gt;, find your credentials, and replace the following values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;MAILTRAP_API_TOKEN&lt;/code&gt; – Used to authenticate API requests, which you can copy/paste from the credentials tab.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DEFAULT_FROM_EMAIL&lt;/code&gt; – Make sure the email’s domain matches your own domain from the &lt;strong&gt;Sending Domains&lt;/strong&gt; tab in Mailtrap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrrbmuuozwu3cvvfqpqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrrbmuuozwu3cvvfqpqo.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Although you shouldn’t face any issues, I still recommend reloading VS Code to make sure everything is being set up correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Send emails with Mailtrap Email MCP Server
&lt;/h2&gt;

&lt;p&gt;To send an email, open the AI Pane of the VS Code editor in the upper-right corner. Then, in the opened pane, make sure &lt;strong&gt;Agent&lt;/strong&gt; mode is selected, which allows VS Code to perform actions for us.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y7o0i3t9xhm2p8ytlsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y7o0i3t9xhm2p8ytlsp.png" alt=" " width="800" height="871"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, open the list of available tools and select Mailtrap. If you see similar MCPs from other code editors (for instance, Cursor), make sure to uncheck them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5mmyiyhs70to8qbyrbu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5mmyiyhs70to8qbyrbu.png" alt=" " width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, let’s try to send a plain-text email. You can test with the prompt below, but feel free to come up with your own prompts and experiment since the possibilities are aplenty. 🙂&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Send an email to &lt;a href="mailto:john.doe@example.com"&gt;john.doe@example.com&lt;/a&gt; with the subject ‘Hi John!’ and a message that wishes John a great day.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;VS Code will then identify the right MCP server for your request, and suggest running the right tool in this case, send-email. &lt;/p&gt;

&lt;p&gt;As soon as you’re ready, click &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flomgvyl2h6f7onuhtwle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flomgvyl2h6f7onuhtwle.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The plain-text email should be sent successfully, and the VS Code Copilot AI will notify you about. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2e9pwykpaacw2zc0k0mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2e9pwykpaacw2zc0k0mw.png" alt=" " width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can verify it by checking the &lt;a href="https://help.mailtrap.io/article/71-email-logs?_gl=1*1rix9o4*_gcl_au*MTU2OTg4MjM0NS4xNzU0Mzc4NTc2" rel="noopener noreferrer"&gt;Email Logs&lt;/a&gt; tab of your Mailtrap dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9i4dmsoqfsr7bnkcm436.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9i4dmsoqfsr7bnkcm436.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping it up
&lt;/h2&gt;

&lt;p&gt;With the Mailtrap MCP server, you can send emails from your AI IDE without having to write a single line of code or leave your editor. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plain-text emails&lt;/li&gt;
&lt;li&gt;HTML emails&lt;/li&gt;
&lt;li&gt;Emailing multiple recipients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to learn more on &lt;a href="https://mailtrap.io/blog/vs-code-send-email/#Send-emails-with-MCP" rel="noopener noreferrer"&gt;how to send emails from VS code&lt;/a&gt;, check out the full version of this article on Mailtrap Blog.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>vscode</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Set up Email Verification in PHP via a Verification Token: Complete Guide</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Fri, 09 Aug 2024 14:44:47 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/how-to-set-up-email-verification-in-php-via-a-verification-token-complete-guide-2dmo</link>
      <guid>https://forem.com/denyskontorskyy/how-to-set-up-email-verification-in-php-via-a-verification-token-complete-guide-2dmo</guid>
      <description>&lt;p&gt;Email verification is the process of ensuring an email address exists and can receive emails. Whereas, email validation checks if the address is properly formatted; that is - written according to specific standards (e.g. UTF-8). &lt;/p&gt;

&lt;p&gt;In this article, I’ll talk about PHP email verification and how to use it for web development and user authentication via a verification token. The article involves a few micro tutorials, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;PHPMailer configuration with Mailtrap&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A simple HTML form creation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic email address verification &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generating and storing tokens and credentials in an SQL database&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sending email verification with a verification token&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email testing as related to verification &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, let’s get to it. &lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up email sending
&lt;/h2&gt;

&lt;p&gt;To send verification emails, you can use PHP's built-in mail() function or a library like PHPMailer, which offers more features and better reliability.&lt;/p&gt;

&lt;p&gt;Since I want to make the tutorial as safe and production-ready as possible, I’ll be using ‘PHPMailer’. Check the code to install PHPMailer via Composer:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;composer require phpmailer/phpmailer&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Why use Mailtrap API/SMTP?&lt;/p&gt;

&lt;p&gt;It’s an email delivery platform to test, send, and control your emails in one place. And, among other things, you get the following:&lt;/p&gt;

&lt;p&gt;Ready-made configuration settings for various languages, PHP &amp;amp; Laravel included.&lt;/p&gt;

&lt;p&gt;SMTP and API with SDKs in major languages, ofc, PHP included. &lt;/p&gt;

&lt;p&gt;Industry-best analytics. &lt;/p&gt;

&lt;p&gt;27/7 Human support, and fast track procedure for urgent cases. &lt;/p&gt;

&lt;p&gt;All that allows you to bootstrap the email verification process, and keep it safe and stable for all.&lt;/p&gt;

&lt;p&gt;Moving on to the settings to configure PHPMailer with Mailtrap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
$phpmailer = new PHPMailer();
$phpmailer-&amp;gt;isSMTP();
$phpmailer-&amp;gt;Host = 'live.smtp.mailtrap.io';
$phpmailer-&amp;gt;SMTPAuth = true;
$phpmailer-&amp;gt;Port = 587;
$phpmailer-&amp;gt;Username = 'api';
$phpmailer-&amp;gt;Password = 'YOUR_MAILTRAP_PASSWORD';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s the PHPMailer setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

function sendVerificationEmail($email, $verificationCode) {
    $mail = new PHPMailer(true);

    try {
        // Server settings
        $mail-&amp;gt;isSMTP();
        $mail-&amp;gt;Host = 'live.smtp.mailtrap.io';
        $mail-&amp;gt;SMTPAuth = true;
        $mail-&amp;gt;Username = 'api';
        $mail-&amp;gt;Password = 'YOUR_MAILTRAP_PASSWORD';
        $mail-&amp;gt;SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail-&amp;gt;Port = 587;

        // Recipients
        $mail-&amp;gt;setFrom('youremail@example.com', 'Your Website');
        $mail-&amp;gt;addAddress($email);

        // Content
        $mail-&amp;gt;isHTML(false);
        $mail-&amp;gt;Subject = 'Email Verification';
        $mail-&amp;gt;Body    = "Your verification code is: $verificationCode";

        $mail-&amp;gt;send();
        return true;
    } catch (Exception $e) {
        return false;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the code above doesn’t send the verification token (click here to jump to the code snippet with the verification token). It’s only an example of how to set up Mailtrap SMTP and define the verification function. Here’s a quick breakdown of key points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;PHPMailer and Exception classes get imported.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sendVerificationEmail($email, $verificationCode) is the function definition. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A new PHPMailer object is created. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The try-catch block handles exceptions during email sending.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The server settings are set to Mailtrap as per the exemplary configuration. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The email content is set to isHTML(false) for plain text. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tips: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The email content can be refactored to HTML. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Due to throughput limitations, you should avoid using gmail.com as a signup form SMTP relay. But if you really want to create a mailer PHP file and send via Gmail, check this tutorial. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Creating a registration form
&lt;/h2&gt;

&lt;p&gt;The below is a simple registration form, it contains the header and user account information (username, email, and password). &lt;/p&gt;

&lt;p&gt;It doesn’t have any CSS stylesheet or div class since this is only an example.&lt;/p&gt;

&lt;p&gt;However, I’d advise you to include these on production and align them with the design language of your brand. Otherwise, your form may look unprofessional and users would be reluctant to engage with it.&lt;br&gt;
&lt;br&gt;
 &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Register&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form action="register.php" method="post"&amp;gt;
        &amp;lt;label&amp;gt;Username:&amp;lt;/label&amp;gt;
        &amp;lt;input type="text" name="username" required&amp;gt;
        &amp;lt;br&amp;gt;
        &amp;lt;label&amp;gt;Email:&amp;lt;/label&amp;gt;
        &amp;lt;input type="email" name="email" required&amp;gt;
        &amp;lt;br&amp;gt;
        &amp;lt;label&amp;gt;Password:&amp;lt;/label&amp;gt;
        &amp;lt;input type="password" name="password" required&amp;gt;
        &amp;lt;br&amp;gt;
        &amp;lt;input type="submit" name="register" value="Register"&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Bonus Pro Tip - Consider using JavaScript with your forms &lt;/p&gt;

&lt;p&gt;If you want a full tutorial on how to create a PHP contact form that includes reCaptcha, check the video below ⬇️. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;JS can validate user input in real time, providing immediate feedback on errors without needing to reload the page. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By catching errors on the client side, JS can reduce the number of invalid requests sent to the server, thereby reducing server load and improving performance for each session.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using AJAX, JS can send and receive data from the server without reloading the page, providing a smoother user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, I’ll move to email address verification.  &lt;/p&gt;
&lt;h2&gt;
  
  
  Email address verification
&lt;/h2&gt;

&lt;p&gt;Here’s a simple script to check for the domain and the MX record. It basically allows you to verify email by performing an MX lookup.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

// This method checks if the domain part of the email address has a functioning mail server.

$email = "user@example.com";

list($user, $domain) = explode(separator:"@", $email)

if (filter_var($email, filter:FILTER_VALIDATE_EMAIL) &amp;amp;&amp;amp; getmxrr($domain, &amp;amp;hosts: $mxhosts)){
    echo "Valid email address with a valid mail server" . PHP_EOL;
} else {
    echo "Invalid email address or no valid mail server found" . PHP_EOL;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, the script doesn’t send email for user activation and authentication. Also, it doesn’t store any data in MySQL. &lt;/p&gt;

&lt;p&gt;For that, I’ll do the following in the next sections: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate a verification token &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a PHP MySQL schema to store the credentials from the registration form&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send the verification email with the token&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify the verification token&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tip: Similar logic can be applied to a logout/login form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generating verification token
&lt;/h2&gt;

&lt;p&gt;A verification token is a unique string generated for each user during registration. This token is included in the verification email and there are two methods to generate it.&lt;/p&gt;

&lt;p&gt;Method 1&lt;/p&gt;

&lt;p&gt;The first method leverages the bin2hex command to create a random token with the parameter set to (random_bytes(50)).&lt;br&gt;
&lt;br&gt;
 &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$token = bin2hex(random_bytes(50));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Method 2&lt;/p&gt;

&lt;p&gt;Alternatively, you can generate the token with the script below. And I’ll be using that script in the email-sending script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
function generateVerificationCode($length = 6) {
    $characters = '0123456789';
    $code = '';
    for ($i = 0; $i &amp;lt; $length; $i++) {
        $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $code;
}
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Storing verification token
&lt;/h2&gt;

&lt;p&gt;Before sending the verification email, it’s vital to ensure you properly handle and store user data. I’ll use a simple SQL schema to create the users table and store the generated token in the database along with the user's registration information.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(255) NOT NULL,
    token VARCHAR(255) DEFAULT NULL,
    is_verified TINYINT(1) DEFAULT 0
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quick breakdown: &lt;/p&gt;

&lt;p&gt;The script above creates a users table with the following columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;id - Unique identifier for each user, automatically incremented.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;username - The user's username; it cannot be null.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;email - The user's email address; it cannot be null.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;password - The user's password (hashed); it cannot be null.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;token - A verification token, which can be null.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;is_verified - A flag indicating whether the user is verified (0 for not verified, 1 for verified), with a default value of 0.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sending verification token 
&lt;/h2&gt;

&lt;p&gt;Overall, the script below is amalgamation of everything previously discussed in the article and it’s designed to: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Generate a random numeric verification code. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send the verification email to a specified email address using PHPMailer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the email server settings. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handle potential errors. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide feedback on whether the email was successfully sent.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the script is geared towards Mailtrap users and it leverages the SMTP method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

require 'vendor/autoload.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP
use PHPMailer\PHPMailer\Exception;

//Function to generate a random verification code
1 usage
function generateVerificationCode($length = 6) {
    $characters = '0123456789';
    $code = '';
    for ($i = 0; $i &amp;lt; $length; $i++) {
        $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $code;
}

// Function to send a verification email using PHPMailer
1 usage
function sendVerificationEmail($email, $verificationCode) {
    $mail = new PHPMailer (exception: true);

    try {
        // Server settings
        $mail -&amp;gt;SMTPDebug = SMTP::DEBUG_OFF; // Set to DEBUG_SERVER for debugging
        $mail -&amp;gt;isSMTP();
        $mail -&amp;gt;Host = 'live.smtp.mailtrap.io'; // Mailtrap SMTP server host 
        $mail -&amp;gt;SMTPAuth = true;
        $mail -&amp;gt;Username = 'api'; // Your Mailtrap SMTP username
        $mail -&amp;gt;Password = 'YOUR_MAILTRAP_PASSWORD'; // Your Mailtrap SMTP password
        $mail -&amp;gt;SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption
        $email -&amp;gt;Port = 587; // TCP port to connect to

        //Recipients
        $mail-&amp;gt;setFrom(address:'mailtrapclub@gmail.com', name:"John Doe"); //Sender's email and name
        $mail-&amp;gt;addAddress($email); // Recipient's email

        //Content
        $mail-&amp;gt;isHTML(isHTML:false); //Set to true if sending HTML email
        $mail-&amp;gt;Subject = 'Email Verification';
        $mail-&amp;gt;Body = "Your verification code is: $verificationCode";

        $mail-&amp;gt;send();
        return true;
    }catch (Exception $e) {
        return false;
    }
}

//Example usage
$email = "mailtrapclub+test@gmail.com"
$verificationCode = generateVerificationCode();

if (sendVerificationEmail($email,$verificationCode)){
    echo "A verification email has been sent to $email. Please check your inbox and enter the code to verrify your email." . PHP_EOL;
} else {
    echo "Failed to send the verification email. Please try again later." . PHP_EOL;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Verifying verification token
&lt;/h2&gt;

&lt;p&gt;Yeah, the title is a bit circular, but that’s exactly what you need. The script below enables the “verification of verification” flow 😀 that moves like this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user hits the verification link. &lt;/li&gt;
&lt;li&gt;The token gets validated.&lt;/li&gt;
&lt;li&gt;The user’s email is marked as verified in the database.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_verification";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn-&amp;gt;connect_error) {
    die("Connection failed: " . $conn-&amp;gt;connect_error);
}

if (isset($_GET['token'])) {
    $token = $_GET['token'];

    $stmt = $conn-&amp;gt;prepare("SELECT * FROM users WHERE token=? LIMIT 1");    $stmt-&amp;gt;bind_param("s", $token);    $stmt-&amp;gt;execute();
    $result = $stmt-&amp;gt;get_result();
    if ($result-&amp;gt;num_rows &amp;gt; 0) {
        $user = $result-&amp;gt;fetch_assoc();        $stmt-&amp;gt;close();
        $stmt = $conn-&amp;gt;prepare("UPDATE users SET is_verified=1, token=NULL WHERE id=?");        $stmt-&amp;gt;bind_param("i", $user['id']);

        if ($stmt-&amp;gt;execute() === TRUE) {
            echo "Email verification successful!";
        } else {
            echo "Error: " . $conn-&amp;gt;error;
        }        $stmt-&amp;gt;close();
    } else {
        echo "Invalid token!";
    }
}

$conn-&amp;gt;close();
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We appreciate you chose this article to know more about &lt;a href="https://mailtrap.io/blog/php-email-verification/" rel="noopener noreferrer"&gt;php email verification&lt;/a&gt;. To continue reading the article and discover more articles on related topics, follow Mailrap Blog!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>php</category>
      <category>email</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Validate Emails in Laravel: Quick and Simple Steps</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Wed, 15 May 2024 06:42:27 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/how-to-validate-emails-in-laravel-quick-and-simple-steps-129g</link>
      <guid>https://forem.com/denyskontorskyy/how-to-validate-emails-in-laravel-quick-and-simple-steps-129g</guid>
      <description>&lt;p&gt;The process of email validation in Laravel is simpler than you might think. By the end of this article, you’ll know how to set up your own email validation system.&lt;/p&gt;

&lt;p&gt;First off, let’s clarify something important: email validation focuses solely on the format of the email, meaning how it’s written. &lt;/p&gt;

&lt;p&gt;This differs from &lt;a href="https://mailtrap.io/blog/laravel-email-verification/"&gt;email verification&lt;/a&gt;, which goes beyond format to validate the email’s usage and authenticity. If you’re interested in the step-by-step Laravel email verification, check out our video tutorial:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/KiHzbVsErNo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;While you can also perform validation on the client side, such as in a Laravel contact form, in this article, I’ll strictly focus on server-side techniques.&lt;/p&gt;

&lt;h2&gt;
  
  
  Laravel email validation rule
&lt;/h2&gt;

&lt;p&gt;In Laravel, I use a robust validation system that simplifies workflows and ensures data integrity. My go-to tools are Laravel’s Validator facade and Form request classes, which handle data validation effectively. &lt;/p&gt;

&lt;p&gt;These tools ensure that data meets predefined criteria before processing, helping maintain quality and consistency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Validator facade
&lt;/h3&gt;

&lt;p&gt;Using the Validator facade directly within your controllers allows quick, inline validation, making it ideal for simpler or less frequent validation scenarios.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;****_Note&lt;/em&gt;&lt;strong&gt;:&lt;/strong&gt; The code examples in this article are based on Laravel 10. While many of these techniques will be applicable to other versions, some specifics may differ. _&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To use the Validator facade, follow these steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Import the Validator&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add the Validator facade at the beginning of your controller file to enable Laravel’s built-in validation features.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use Illuminate\Support\Facades\Validator;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will allow you to access Laravel’s built-in validation features directly within your controller.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create Validation Rules&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Define specific validation rules for the data you process within your controller method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$rules = [
    'email' =&amp;gt; 'required|email',
    'name' =&amp;gt; 'required|string|max:255',
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These rules determine what data is acceptable, ensuring that your application only processes correctly formatted data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Apply Validation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apply the defined rules to the incoming data using the Validator facade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$validator = Validator::make($request-&amp;gt;all(), $rules);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code will check the validity of the data against your predefined rules.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Handle Validation Failure&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lastly, determine the response if the validation fails.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if ($validator-&amp;gt;fails()) {
    return redirect('form')-&amp;gt;withErrors($validator)-&amp;gt;withInput();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will redirect users to the form with error messages and their data, helping them correct inputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Form Request Classes
&lt;/h3&gt;

&lt;p&gt;Laravel’s form request classes help keep your controller code clean by separating the validation logic into dedicated classes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the steps to effectively use them for email validation&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Generate a Form Request Class&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using Laravel’s Artisan command line tool, create a new form request class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:request EmailValidationRequest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command generates a new class in the &lt;em&gt;App&lt;/em&gt;_Http__Requests_ directory, a PHP file where you can define all your custom validation rules.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Define Validation Rules in the Request Class&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open your newly created EmailValidationRequest class to add your own validation rules.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class EmailValidationRequest extends FormRequest
{
    public function authorize()
    {
        return true; // Always return true unless you have specific authorization logic
    }

    public function rules()
    {
        return [
            'email' =&amp;gt; 'required|email',
        ];
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method requires the email field to be valid, ensuring data adheres to rules for consistent and maintainable validation checks.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Apply the Request Class in Your Controller&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lastly, incorporate the EmailValidationRequest in your controller method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function store(EmailValidationRequest $request)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This automates validation, redirecting with errors on failure and keeping your controller focused on core logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regular expression for email validation in Laravel
&lt;/h2&gt;

&lt;p&gt;When working with Laravel, the standard email validation rule, which primarily checks for a valid email format, doesn’t fit every scenario. &lt;/p&gt;

&lt;p&gt;For instance, it’s unsuitable when you exclude emails from disposable domains that are technically valid but not desired for a user registration process.&lt;/p&gt;

&lt;p&gt;This is why I rely on regular expressions (regex), a flexible alternative that offers customized validation and deals with complex scenarios.&lt;/p&gt;

&lt;p&gt;Creating an effective regex means knowing which patterns to include or exclude to ensure it’s flexible and lenient. Here’s an example of a regex pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pattern checks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A start with one or more alphanumeric characters, including dots, underscores, and percent, plus, &amp;amp; minus signs.&lt;/li&gt;
&lt;li&gt;An @ symbol.&lt;/li&gt;
&lt;li&gt;A domain name consisting of one or more alphanumeric characters, including hyphens and dots.&lt;/li&gt;
&lt;li&gt;A domain extension of at least two alphabetic characters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To add a custom regex to Laravel’s validation system, directly include it in the controller’s rules array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

public function store(Request $request)
{
    $rules = [
        'email' =&amp;gt; ['required', 'regex:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/'],
    ];

    $validator = Validator::make($request-&amp;gt;all(), $rules);

    if ($validator-&amp;gt;fails()) {
        return back()-&amp;gt;withErrors($validator)-&amp;gt;withInput();
    }

    // Email is valid, proceed with the next steps
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This setup ensures that the input email adheres strictly to the defined regex pattern, embedding it into the validation rules for robust control over email formats unique to your application’s needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email validation in Laravel using API
&lt;/h2&gt;

&lt;p&gt;Standard validation rules, custom regular expressions, and regex are great, but API-based solutions are sometimes the right way to achieve the highest accuracy and security. &lt;/p&gt;

&lt;p&gt;There are &lt;a href="https://mailtrap.io/blog/email-verification-tools/"&gt;several services available&lt;/a&gt;, such as Hunter, ZeroBounce, and NeverBounce, which offer APIs to perform advanced email checks.&lt;/p&gt;

&lt;p&gt;Such API-based validation is helpful when you need real-time, comprehensive checks and especially useful when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirming domain authenticity to prevent emails from unauthorized or spoofed domains.&lt;/li&gt;
&lt;li&gt;Verifying that an email address is not only valid but also active.&lt;/li&gt;
&lt;li&gt;Enhancing security by ensuring that only valid email addresses are allowed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To demonstrate how to integrate API-based email validation into your Laravel applications, I’ll use &lt;a href="https://www.zerobounce.net/services/email-validation/"&gt;ZeroBounce&lt;/a&gt;, a tool that I found helpful for such cases.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sign Up&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Register an account at ZeroBounce, then locate and copy your API key from the dashboard.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;C*&lt;em&gt;onfigure API Key&lt;/em&gt;*&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add the API key to your .env file for security.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ZEROBOUNCE_API_KEY=your_api_key_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set Up HTTP Client&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Implement the HTTP client to send requests to the ZeroBounce API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use Illuminate\Support\Facades\Http;

public function validateEmailWithZeroBounce($email)
{
    $apiKey = env('ZEROBOUNCE_API_KEY');
    $response = Http::get("https://api.zerobounce.net/v2/validate?api_key={$apiKey}&amp;amp;email={$email}");

    return $response-&amp;gt;json();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function sends a GET request to ZeroBounce, which checks the email address for validity and deliverability, returning a JSON response.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Utilize the Validation Function&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use the validation function in your web application to check if emails are valid.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function registerNewUser(Request $request)
{
    $emailCheck = $this-&amp;gt;validateEmailWithZeroBounce($request-&amp;gt;email);

    if ($emailCheck['status'] == 'valid' &amp;amp;&amp;amp; $emailCheck['smtp_valid'] == true) {
        // Proceed with user registration
    } else {
        return back()-&amp;gt;withErrors(['email' =&amp;gt; 'Invalid or non-deliverable email address.']);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This validation method uses the ZeroBounce API response to determine whether to proceed with a new user registration based on the email’s validity and deliverability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email validation in Laravel using the email-validator library
&lt;/h2&gt;

&lt;p&gt;In Laravel, you can easily implement email validation using the &lt;em&gt;egulias&lt;/em&gt;/&lt;em&gt;EmailValidator&lt;/em&gt; library. Here’s a brief guide on how to do it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install the Library&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;First, you need to install the egulias/EmailValidator library via Composer.&lt;/p&gt;

&lt;p&gt;Open your terminal, navigate to your Laravel project directory, and run the following command:&lt;/p&gt;

&lt;p&gt;Once the library is installed, you can use it in your Laravel application for email validation within the controller or form request validation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Controller Validation&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In your controller, use the validate method provided by Laravel to validate the email input against the egulias/EmailValidator library. Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Egulias\EmailValidator\Validation\EmailValidation;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $request-&amp;gt;validate([
            'email' =&amp;gt; ['required', 'email', function ($attribute, $value, $fail) {
                $validator = new EmailValidation();
                if (!$validator-&amp;gt;isValid($value)) {
                    $fail('The '.$attribute.' is invalid.');
                }
            }],
        ]);

        // Process valid email
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This snippet validates email addresses using a custom rule, utilizing a closure with the &lt;em&gt;isValid&lt;/em&gt; method from the &lt;em&gt;egulias&lt;/em&gt;/&lt;em&gt;EmailValidator&lt;/em&gt; library.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Form Request Validation
&lt;/h3&gt;

&lt;p&gt;Alternatively, you can create a custom form request and define the email validation rules there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Egulias\EmailValidator\Validation\EmailValidation;

class StoreUserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'email' =&amp;gt; ['required', 'email', function ($attribute, $value, $fail) {
                $validator = new EmailValidation();
                if (!$validator-&amp;gt;isValid($value)) {
                    $fail('The '.$attribute.' is invalid.');
                }
            }],
        ];
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, in your controller, type-hint the custom form request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Http\Requests\StoreUserRequest;

public function store(StoreUserRequest $request)
{
    // Process valid email
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Email validation as a part of email testing
&lt;/h2&gt;

&lt;p&gt;A solid validation mechanism is, without a doubt, a must for well-maintained email contacts and improving overall deliverability.&lt;/p&gt;

&lt;p&gt;However, it’s not enough if you’re not testing your emails before sending them. This step is crucial for your emails to land where they should—right in your recipients’ inboxes… Besides, we all aim for high deliverability rates.&lt;/p&gt;

&lt;p&gt;This is why I always find myself relying on &lt;a href="https://mailtrap.io/email-sandbox/"&gt;Mailtrap Email Testing&lt;/a&gt;—a part of the more extensive &lt;a href="https://mailtrap.io/"&gt;Mailtrap Email Delivery Platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mailtrap Email Testing allows you to review and troubleshoot emails across staging, development, and QA environments without cluttering your recipients’ inboxes. You can also check the support for HTML and CSS templates with the most popular mailbox providers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk706epq7fe8z7itd3i48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk706epq7fe8z7itd3i48.png" alt="Image description" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://mailtrap.io/register/signup"&gt;Test Emails with Mailtrap for Free&lt;br&gt;
&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, it also enables you to assess the Spam Scores of your emails and check whether your IP is listed on any blacklists.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf9fep8o1gizzk1v4v40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf9fep8o1gizzk1v4v40.png" alt="Image description" width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, you can create, edit, and test your HTML email templates and then switch to the production environment when you’re ready to send.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsemz4aycir66k2l417e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsemz4aycir66k2l417e.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can further streamline your testing process by leveraging Mailtrap’s Email Testing API. This will help identify and resolve code issues early and ensure that your emails are perfect when they are sent. &lt;/p&gt;

&lt;p&gt;This is merely a snapshot of what Mailtrap Email Testing is capable of. Check out the video below for a more detailed exploration of its features. And, of course, try the tool yourself to let its performance do the talking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/AveaJc6c3fI"&gt;How Mailtrap Email Testing Works – Getting Started Guide&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summing up
&lt;/h2&gt;

&lt;p&gt;Email validation in Laravel is crucial for anyone who wants to build a reliable and effective email communication system. From simple Laravel validation rules to more sophisticated API checks, I encourage you to try all these methods to discover which suits your needs best. &lt;/p&gt;

&lt;p&gt;Experimenting with these techniques and incorporating Mailtrap’s Email Testing into your workflow can significantly enhance your email delivery success. &lt;/p&gt;

&lt;p&gt;For those eager to master the art of email management with Laravel, explore our articles on the topic, which are designed to broaden your understanding and enhance your skills! 😉&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/laravel-send-email-gmail/"&gt;Send Email in Laravel with Gmail SMTP: Code Snippets [2024]&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/laravel-email-testing/"&gt;Laravel Email Testing: Mailtrap vs. Other Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/laravel-mail-queue/"&gt;Laravel Mail Queue Tutorial | Mailtrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/laravel-notification-tutorial/"&gt;Laravel Email Notification Tutorial | Mailtrap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We appreciate you chose this article to know about Laravel email validation. If you want to find more interesting content on related topics, follow &lt;a href="https://mailtrap.io/blog/laravel-email-validation/"&gt;Mailtrap blog&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Developer’s Guide on JavaScript Email Validation: Client &amp; Server-Side Methods Covered</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Fri, 03 May 2024 07:02:48 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/developers-guide-on-javascript-email-validation-client-server-side-methods-covered-2b6e</link>
      <guid>https://forem.com/denyskontorskyy/developers-guide-on-javascript-email-validation-client-server-side-methods-covered-2b6e</guid>
      <description>&lt;p&gt;In web development, email validation in JavaScript rules the game. Be it form validation, or a sign-up sequence email validation, you need to be sure users type the right thing. &lt;/p&gt;

&lt;p&gt;Here, I cover JavaScript email validation front-end and back-end (server-side). And this “full-stack” tutorial is geared towards beginners, but there are also nuggets of wisdom for more advanced users. &lt;/p&gt;

&lt;p&gt;As always, there are JavaScript code snippets you can easily copy-paste to your project. &lt;/p&gt;

&lt;h2&gt;
  
  
  Validate emails with basic JS function
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/blog/email-validation/"&gt;Email validation&lt;/a&gt; serves multiple purposes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensures data integrity in your database&lt;/li&gt;
&lt;li&gt;Improves user experience by catching typos early &lt;/li&gt;
&lt;li&gt;It’s the first line of defense against common types of form submission spam&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus, an incorrectly formatted email address can lead to failed communication, resulting in a poor user experience and potential loss of users or customers.&lt;/p&gt;

&lt;p&gt;In this section, I’ll cover a basic validation step – checking for the presence of the ‘@’ symbol. See the function below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function isValidEmail(email) {
  return email.includes('@');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;isValidEmail&lt;/code&gt; function takes a single argument &lt;code&gt;email&lt;/code&gt; and uses the &lt;code&gt;includes&lt;/code&gt; method to check if the &lt;code&gt;@&lt;/code&gt; symbol is present. It returns &lt;code&gt;true&lt;/code&gt; if the symbol is found, indicating a potentially valid email address, and &lt;code&gt;false&lt;/code&gt; otherwise.&lt;/p&gt;

&lt;p&gt;Of course, the method has its limitations due to its simplicity. But there’s a silver lining, understanding the limitations helps set the scene for more complex validation methods in the following sections. Here’s what the limitations are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Limited use&lt;/strong&gt;: It checks only for the presence of the “@” symbol, meaning that “example@” would be considered valid, despite being incomplete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No domain name verification&lt;/strong&gt;: It does not verify if the email’s domain part (e.g., gmail.com, yahoo.com) is valid or exists. The same goes for the top level domain (TDL)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local part nuances&lt;/strong&gt;: The local part of an email address (the first part before the “@”) can contain dots, plus signs, and other special characters, which this method does not account for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;False positives/negatives&lt;/strong&gt;: Because of its simplicity, it might allow many invalid addresses or block potentially valid but unusual email formats.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: You can apply the basic validation as the first step, but don’t rely solely on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript regular expression for email validation
&lt;/h2&gt;

&lt;p&gt;Regular expressions (regex) are tools for pattern matching and text manipulation. &lt;/p&gt;

&lt;p&gt;They enable you to define a search pattern that can be used to perform various text operations such as search, replace, and validation. Here’s a simple example of a regex:&lt;br&gt;
&lt;code&gt;A-za-z0-9&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;a-za-z&lt;/code&gt; section matches any letter from A to Z (uppercase and lowercase)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;0-9&lt;/code&gt; section matches digits from 0 to 9&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the above is just for shows, you need a more complex regex for email validation. &lt;/p&gt;

&lt;p&gt;To catch an invalid email address, a regex can be designed to match the general structure of an address, ensuring it conforms to standard email formatting rules.&lt;/p&gt;

&lt;p&gt;A widely accepted pattern that adheres to most email validation standards is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The presence of an “@” symbol, separating the local part from the domain part.&lt;/li&gt;
&lt;li&gt;The presence of a domain part with at least one dot, indicating a domain extension.&lt;/li&gt;
&lt;li&gt;No leading, trailing, or consecutive whitespace characters within the email address.
Here’s how you can use the above regex pattern within a JavaScript function to validate email addresses:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function validateEmail(email) {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;validateEmail&lt;/code&gt; function takes an email address as input and returns &lt;code&gt;true&lt;/code&gt; if the email matches the regex pattern, indicating a valid email format, or &lt;code&gt;false&lt;/code&gt; otherwise.&lt;/p&gt;

&lt;h3&gt;
  
  
  The common regex pitfalls and how to avoid them
&lt;/h3&gt;

&lt;p&gt;As said, regex isn’t bulletproof, unless you make it a mile-long, attempting to cover all edge cases. So, check what to keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complexity&lt;/strong&gt;: Email address standards are complex, and no regex can validate every possible valid email address. For instance, the official specification allows for quoted strings and comments in email addresses, which are rarely used and often not considered in regex patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Overly complex regex patterns can be slow and inefficient, especially when processing large volumes of data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readability&lt;/strong&gt;: Complex regex patterns can be difficult to read and maintain, making it hard to understand what is being validated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to avoid the pitfalls?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suggested] Consider using built-in validation functions or third-party libraries for more complex validation needs, as they may handle edge cases and performance issues. You can jump on &lt;a href="https://mailtrap.io/blog/javascript-email-validation/#validator"&gt;lib validation&lt;/a&gt; and &lt;a href="https://mailtrap.io/blog/javascript-email-validation/#serverside"&gt;server-side validation&lt;/a&gt; by clicking on these links. &lt;/li&gt;
&lt;li&gt;Stick to simple and well-understood patterns for most use cases, understanding that some edge cases will be missed.&lt;/li&gt;
&lt;li&gt;Test the regex thoroughly with a wide range of email addresses to ensure it meets your specific needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: &lt;code&gt;regexp&lt;/code&gt; can be used to define more specialized filters, note that it’s not common in email validation. &lt;/p&gt;

&lt;h2&gt;
  
  
  Email validation in HTML using JavaScript
&lt;/h2&gt;

&lt;p&gt;Email validation within an HTML form helps ensure data integrity and enhances user experience. &lt;/p&gt;

&lt;p&gt;Real-time feedback within modern web apps guides users to correct errors immediately, rather than after form submission. It helps avoid user frustration that might lead to form abandonment. &lt;/p&gt;

&lt;p&gt;This immediate feedback implementation can be achieved by listening to user input events and validating them on the fly. &lt;/p&gt;

&lt;p&gt;I’ll be using the &lt;code&gt;oninput&lt;/code&gt; or &lt;code&gt;onchange&lt;/code&gt; HTML event attributes trigger real-time email validation functions. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;oninput&lt;/code&gt; event triggers every time the user types or deletes something in the input field, providing immediate feedback. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;onchange&lt;/code&gt; event triggers after the element loses focus, which is useful for final validation before submission. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this JavaScript tutorial, I’ll use the &lt;code&gt;oninput&lt;/code&gt; event trigger and integrate regex-based validation. It’s a simple doctype html registration form without form name, &lt;code&gt;textarea&lt;/code&gt;, CSS styles, &lt;code&gt;div&lt;/code&gt; class, &lt;code&gt;li&lt;/code&gt; class, etc. Nonetheless, if you add them the address validation logic is still the same. &lt;/p&gt;

&lt;p&gt;Check the steps below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a basic HTML form with an email input field:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form id="registrationForm"&amp;gt;
  &amp;lt;label for="emailInput"&amp;gt;Email:&amp;lt;/label&amp;gt;
  &amp;lt;input type="email" id="emailInput" oninput="validateEmailInput()"&amp;gt;
  &amp;lt;span id="emailFeedback" style="color: red;"&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Implement the &lt;code&gt;validateEmailInput&lt;/code&gt; function that uses the regex pattern for email validation:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function validateEmailInput() {
  const emailInput = document.getElementById('emailInput').value;
  const feedbackElement = document.getElementById('emailFeedback');
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

  if (emailRegex.test(emailInput)) {
    feedbackElement.textContent = ""; // Email is valid
  } else {
    feedbackElement.textContent = "Please enter a valid email address.";
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance and UX&lt;/strong&gt;: For a better user experience, ensure the validation feedback is clear and not overly intrusive. Real-time validation should not distract or annoy the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt;: When designing real-time feedback, consider accessibility. Ensure that feedback is accessible to users of assistive technologies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallbacks&lt;/strong&gt;: Remember that client-side validation is not a substitute for server-side validation. Always validate data on the server to ensure security and data integrity. I’ll talk about that in detail in &lt;a href="https://mailtrap.io/blog/javascript-email-validation/#serverside"&gt;later sections&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Avoid using ‘onclick’ attribute for better UX. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in a full &lt;a href="https://mailtrap.io/blog/html5-email-validation-tutorial/"&gt;HTML5 email validation tutorial&lt;/a&gt;, check the linked article. &lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript email validation with jQuery
&lt;/h2&gt;

&lt;p&gt;jQuery is a fast, small, and feature-rich JavaScript library, and it can help a lot with the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML document traversal and manipulation &lt;/li&gt;
&lt;li&gt;Event handling &lt;/li&gt;
&lt;li&gt;Animation &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, it has one of the easiest-to-use APIs that work across different browsers. &lt;/p&gt;

&lt;p&gt;But, in the context of validation, jQuery’s greatest strength is the ability to abstract complex tasks into methods that can be called with just a few lines of code.&lt;/p&gt;

&lt;p&gt;To put it plainly, it simplifies selecting and manipulating elements and attaching event listeners. In turn, it’s a great choice for email validation within web apps, so here’s how to use it. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Again, we’re starting with a basic HTML form
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form id="registrationForm"&amp;gt;
  &amp;lt;label for="emailInput"&amp;gt;Email:&amp;lt;/label&amp;gt;
  &amp;lt;input type="email" id="emailInput"&amp;gt;
  &amp;lt;span id="emailFeedback" style="color: red;"&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Use jQuery to select the input field and bind an input event to perform validation
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$(document).ready(function() {
  $('#emailInput').on('input', function() {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (emailRegex.test($(this).val())) {
      $('#emailFeedback').text(''); // Email is valid
    } else {
      $('#emailFeedback').text('Please enter a valid email address.');
    }
  });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using ‘&lt;code&gt;validator&lt;/code&gt;’ for email validation
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;validator&lt;/code&gt; is a lightweight JavaScript library that offers a range of string validation and sanitazation functions. It is designed to be simple, efficient, and flexible, making it an excellent tool for various validation scenarios, including email validation.&lt;/p&gt;

&lt;p&gt;For me, the main highlights include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clean and simple function calls&lt;/strong&gt;: Each validation type, like checking if a string is an email, is performed through a straightforward function call, which makes the code easy to understand and maintain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports both client and server-side&lt;/strong&gt;: &lt;code&gt;validator&lt;/code&gt; can be used in both browser and Node.js environments, ensuring versatility in deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No dependencies&lt;/strong&gt;: It operates independently without reliance on other libraries, making it a lightweight choice for projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduces boilerplate code&lt;/strong&gt;: While it doesn’t provide a declarative setup for validation rules, the simplicity of its function calls can still help reduce the complexity in code, focusing purely on the validation logic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With all the goodies listed, I’ll now show you how to implement it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Include &lt;code&gt;validator&lt;/code&gt; in your project. If you’re working in a browser environment, you can add it directly with a script tag.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script src="https://unpkg.com/validator@latest/validator.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Define the validation rules and the custom error message for email validation.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const form = document.getElementById('registrationForm');
form.addEventListener('submit', function(event) {
  event.preventDefault();

  const email = form.elements.email.value;
  let errorMessages = [];

  // Email validation
  if (!validator.isEmail(email)) {  // Checks if the email is in a valid format
    errorMessages.push('Invalid email format.');
  }

  // Display error messages or submit the form
  if (errorMessages.length &amp;gt; 0) {
    const errorMessage = errorMessages.join(', ');
    document.getElementById('emailFeedback').textContent = errorMessage;
  } else {
    // No errors, proceed with form submission or further processing
    document.getElementById('emailFeedback').textContent = '';
    // form.submit(); Uncomment this line if you wish to submit the form upon validation
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;As always, you’ll need an HTML form with an input field for the email and a place to display the validation error message:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form id="registrationForm"&amp;gt;
  &amp;lt;label for="emailInput"&amp;gt;Email:&amp;lt;/label&amp;gt;
  &amp;lt;input type="email" name="email" id="emailInput"&amp;gt;
  &amp;lt;span id="emailFeedback" style="color: red;"&amp;gt;&amp;lt;/span&amp;gt;
  &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Server-side validation using Ajax
&lt;/h2&gt;

&lt;p&gt;Server-side validation acts as the final checkpoint before data is processed or stored. It offers a layer of protection against invalid or malicious data that might bypass client-side checks.&lt;/p&gt;

&lt;p&gt;To that, Ajax (Asynchronous JavaScript and XML) allows web pages to be updated asynchronously by exchanging data with a web server in the background. It means you can validate form data on the server without reloading the web page, offering a seamless experience to the users.&lt;/p&gt;

&lt;p&gt;Here’s how to implement it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Here’s an example of how you might set up an Ajax call using vanilla JavaScript to validate an email address against the server.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function validateEmailServerSide(email) {
  fetch('/validate-email', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ email: email })
  })
  .then(response =&amp;gt; {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .then(data =&amp;gt; {
    if (data.isValid) {
      alert('Email is valid!');
    } else {
      alert('Email is invalid!');
    }
  })
  .catch(error =&amp;gt; {
    console.error('There was a problem with your fetch operation:', error);
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function sends the email to a server endpoint (&lt;code&gt;/validate-email&lt;/code&gt;) via a POST request and processes the response.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the server side, you can set up a simple Node.js server using Express to handle the validation request.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const app = express();
const port = 3000;

// Middleware to parse JSON bodies
app.use(express.json());

// Route to handle email validation
app.post('/validate-email', (req, res) =&amp;gt; {
  const { email } = req.body;
  // Simple regex for demonstration purposes
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  const isValid = emailRegex.test(email);
  // In a real scenario, you might check against a database here
  res.send({ isValid });
});

app.listen(port, () =&amp;gt; {
  console.log(`Server running at http://localhost:${port}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always sanitize and validate incoming data to prevent SQL injection, cross-site scripting (XSS), and other types of attacks.&lt;/li&gt;
&lt;li&gt;Use existing validation libraries and frameworks to simplify the validation logic syntax and ensure robustness.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus section: email verification in JS
&lt;/h2&gt;

&lt;p&gt;For starters, I’d like to point out the difference between &lt;a href="https://mailtrap.io/blog/email-validation/"&gt;email validation&lt;/a&gt; and &lt;a href="https://mailtrap.io/blog/email-verification/"&gt;email verification&lt;/a&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email validation&lt;/strong&gt; checks if an email address is formatted correctly according to standard email formatting rules (as part of RFC standards). And validation is a part of email verification; meanwhile verification is consist of emal address validation, domain validation, mx checks. Validation can be achieved through regular expressions in JavaScript, as discussed previously. The formatting rules may include:&lt;/li&gt;
&lt;li&gt;ASCII characters (in email addresses typically hyphen, or full stop)&lt;/li&gt;
&lt;li&gt;UTF-8 for Unicode characters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email verification&lt;/strong&gt; goes a step further to check if the email address exists and can receive emails on top of being formatted correctly. This usually involves querying the email server without sending an actual email.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Several services offer API-based email verification, and popular examples include Hunter, ZeroBounce, and NeverBounce. &lt;/p&gt;

&lt;p&gt;Of course, these platforms provide detailed documentation on how to integrate their APIs into your applications. &lt;/p&gt;

&lt;p&gt;And here, I’ll show you how to v&lt;a href="https://hunter.io/email-verifier"&gt;erify email address&lt;/a&gt; using Hunter.io API. For this exemplary integration, I’m using &lt;code&gt;fetch&lt;/code&gt;, which should work regardless of your chosen service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function verifyEmail(email) {
  const apiKey = 'YOUR_API_KEY'; // Replace with your actual API key
  const url = `https://api.hunter.io/v2/email-verifier?email=${email}&amp;amp;apiKey=${apiKey}`;

  fetch(url)
    .then(response =&amp;gt; response.json())
    .then(({data}) =&amp;gt; {
      if (data.status === 'valid') {
        console.log('Email is verified and active.');
      } else {
        console.log('Email cannot be verified.');
      }
    })
    .catch(error =&amp;gt; {
      console.error('Error verifying email:', error);
    });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Some tips on applying email verification:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User experience&lt;/strong&gt;: Inform users if their email address cannot be verified but avoids blocking registrations solely based on verification results to prevent excluding valid users due to temporary server issues or false negatives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy and compliance&lt;/strong&gt;: Ensure that the email verification service complies with privacy laws and regulations, such as GDPR, to protect user data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost and quotas&lt;/strong&gt;: Be mindful of the costs associated with using third-party verification services, especially if your application verifies a large volume of email addresses. Plan accordingly to stay within budget and quota limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Further reading on email validation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/validate-emails-in-react/"&gt;Email Validation in React | Mailtrap Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/angular-email-validation/"&gt;Email Validation in Angular: Full Guide | Mailtrap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important Note on using Hunter API:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Hunter.io API email verification response doesn’t directly return ‘isVerified’ field. It actually provides a data object with various email verification details. &lt;/p&gt;

&lt;p&gt;You can do the following to destructure the data object and get the status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.then(response =&amp;gt; response.json())
.then(({data}) =&amp;gt; {
if (data.status === 'valid') {
console.log('Email is verified and active.');
} else {
console.log('Email cannot be verified.');
}
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Email Validation as a part of email testing
&lt;/h2&gt;

&lt;p&gt;While email validation focuses on confirming the correctness and existence of an email address, it’s just the beginning of a comprehensive email testing strategy. Here’s the spectrum of email testing to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deliverability testing&lt;/strong&gt;: This involves verifying that emails not only get sent but also successfully reach the recipient’s inbox, bypassing spam filters and other barriers. Deliverability issues can stem from various factors, including the sender’s reputation, the content of the email, and the configuration of email servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content and layout testing&lt;/strong&gt;: Ensuring that the email content displays correctly across different email clients and devices is crucial. This type of testing checks for formatting issues, broken links, or problematic images that could affect the user’s ability to engage with the email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spam and blacklist testing&lt;/strong&gt;: This tests whether your emails are being marked as spam or if your domain has been blacklisted, which could severely impact your email deliverability rates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AveaJc6c3fI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Mailtrap Email Delivery Platform, with its &lt;a href="https://mailtrap.io/email-sandbox/"&gt;Email Testing&lt;/a&gt; feature, allows you to check all of the above without spamming your recipients. It’s a sandbox where developers test and debug email functionality via a fake SMTP server. &lt;/p&gt;

&lt;p&gt;Mailtrap Email Testing captures emails sent from your development or staging environment into a safe space to conduct comprehensive email testing. It’s also easy to integrate and we provide read-made snippets in 20+ languages (PHP, Python, C#, etc.) &lt;/p&gt;

&lt;p&gt;And you can do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test email sending capabilities&lt;/strong&gt;: Verify that your application correctly sends emails in various scenarios, such as registration confirmations, password resets, and notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze email content and formatting&lt;/strong&gt;: Mailtrap allows you to inspect the HTML and text versions of your emails, ensuring they look and function as intended across different email clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrq9qcky2x44veqzk8gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrq9qcky2x44veqzk8gw.png" alt="Image description" width="800" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checking deliverability and spam scores&lt;/strong&gt;: Mailtrap evaluates your emails against common spam filters, offering insights into how likely your emails are to be marked as spam and providing tips for improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s4c1wfcqyao1jsd1dlu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s4c1wfcqyao1jsd1dlu.png" alt="Image description" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as an Email Delivery Platform, we also offer &lt;a href="https://mailtrap.io/email-sending/"&gt;Email Sending&lt;/a&gt; via &lt;a href="https://mailtrap.io/smtp-service/"&gt;SMTP&lt;/a&gt; or &lt;a href="https://mailtrap.io/email-api/"&gt;API&lt;/a&gt;. For instance, you can easily integrate it with your web or contact form and enjoy high deliverability rates by design. &lt;/p&gt;

&lt;p&gt;If you want to know how to do contact form email validation, check out our &lt;a href="https://youtu.be/QWLOTHP4who"&gt;video tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Article by&lt;br&gt;
&lt;strong&gt;Yevhenii Odyntsov&lt;/strong&gt;&lt;br&gt;
Content @Mailtrap &lt;/p&gt;

&lt;p&gt;We appreciate the you chose this article to know about email validation in JavaScript. If you want to find more interesting content on related topics, &lt;a href="https://mailtrap.io/blog/javascript-email-validation/"&gt;click here&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Telnet Basics for SMTP Testing: A Step-by-Step Guide</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Thu, 14 Mar 2024 11:00:29 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/telnet-basics-for-smtp-testing-a-step-by-step-guide-4k3e</link>
      <guid>https://forem.com/denyskontorskyy/telnet-basics-for-smtp-testing-a-step-by-step-guide-4k3e</guid>
      <description>&lt;p&gt;This guide delves into the fundamentals of using Telnet for SMTP testing. It offers a thorough walkthrough on setting it up across various operating systems and exploring alternative methods essential for network administrators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Telnet for Email Testing?
&lt;/h2&gt;

&lt;p&gt;Telnet emerges as a valuable tool if you’re exploring options for SMTP testing. Here’s a quick rundown on why it’s a solid choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Direct server interaction: Telnet operates over TCP (Transmission Control Protocol), enabling direct communication with mail servers. This is crucial for diagnosing connection issues and troubleshooting other various SMTP-related problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manual command execution: Its interface allows for manually sending SMTP commands and receiving server responses. This hands-on approach offers deep insights into server behavior and ensures correct configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authentication process testing: It plays a key role in testing SMTP authentication processes, which are vital for the security and integrity of email communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up Telnet: Windows, Linux, Mac
&lt;/h2&gt;

&lt;p&gt;Setting up Telnet varies across different operating systems. In this section, we’ll cover installing and configuring Telnet on Windows, Mac, and various Linux distributions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Before installation, ensure your firewall permits Telnet connections to avoid any connectivity issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Telnet on Windows
&lt;/h3&gt;

&lt;p&gt;Windows users have different installation methods depending on their operating system version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Windows 8 and later:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Command Prompt (cmd) with administrator privileges.&lt;/li&gt;
&lt;li&gt;Type this command and press Enter:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;dism /online /Enable-Feature /FeatureName:TelnetClient&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The dism command requires elevated permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Windows 7, Windows Server 2008 R2, Windows Server 2008, or Windows Vista:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Command Prompt.
Type the following command and press enter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;pkgmgr /iu:"TelnetClient"&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Telnet on Mac
&lt;/h3&gt;

&lt;p&gt;Installing Telnet on a Mac involves using Homebrew, a popular package manager. If you don’t have it installed, follow the steps provided on the &lt;a href="https://docs.brew.sh/Installation"&gt;Homebrew Documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once you have Homebrew set up, open the Terminal and enter the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install telnet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You will see output similar to the following, indicating the progress of the installation:&lt;/p&gt;

&lt;p&gt;`==&amp;gt; Fetching telnet&lt;br&gt;
==&amp;gt; Downloading &lt;a href="https://ghcr.io/v2/homebrew/core/telnet/manifests/64"&gt;https://ghcr.io/v2/homebrew/core/telnet/manifests/64&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  ################################################################## 100.0%
&lt;/h6&gt;

&lt;p&gt;==&amp;gt; Downloading &lt;a href="https://ghcr.io/v2/homebrew/core/telnet/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf"&gt;https://ghcr.io/v2/homebrew/core/telnet/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf&lt;/a&gt;&lt;br&gt;
==&amp;gt; Downloading from &lt;a href="https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf?se=2023-01-26T18%3A25%3A00Z&amp;amp;sig=YVwwx%2FEglPVEjx0gsrb6aN7O6e3D%2Fwk%2BPEMjjTRju7M%3D&amp;amp;sp=r&amp;amp;spr=h"&gt;https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf?se=2023-01-26T18%3A25%3A00Z&amp;amp;sig=YVwwx%2FEglPVEjx0gsrb6aN7O6e3D%2Fwk%2BPEMjjTRju7M%3D&amp;amp;sp=r&amp;amp;spr=h&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  ################################################################## 100.0%
&lt;/h6&gt;

&lt;p&gt;==&amp;gt; Pouring telnet--64.arm64_monterey.bottle.tar.gz&lt;br&gt;
 /opt/homebrew/Cellar/telnet/64: 4 files, 175.2KB&lt;br&gt;
==&amp;gt; Running &lt;code&gt;brew cleanup telnet&lt;/code&gt;...&lt;br&gt;
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.&lt;br&gt;
Hide these hints with HOMEBREW_NO_ENV_HINTS (see &lt;code&gt;man brew&lt;/code&gt;).`&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Telnet on Linux
&lt;/h3&gt;

&lt;p&gt;The installation of Telnet on Linux varies based on your distribution. For all distributions, you will be prompted to enter your administrator password. Type it in, press enter, and wait for the system to complete the installation before proceeding with further commands.&lt;br&gt;
Common commands for popular distributions are entered in the Terminal as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arch Linux and Manjaro:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ sudo pacman -S inetutils&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ubuntu, Kali Linux, Debian, and Linux Mint:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ sudo apt install telnet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Red Hat, Fedora, and CentOS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ sudo dnf install telnet&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Test SMTP with Telnet?
&lt;/h2&gt;

&lt;p&gt;To initiate an SMTP connection with a server via Telnet, use a command specifying the server’s address (domain name or IP address) and the port it listens on. For instance:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;telnet sandbox.smtp.mailtrap.io 2525&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command attempts to connect to the SMTP server at sandbox.smtp.mailtrap.io on port number 2525.&lt;/p&gt;

&lt;p&gt;Once the connection is successfully established, you should see a response from the SMTP server. For the above command, the response might look like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;220 sandbox.smtp.mailtrap.io ESMTP server ready&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This indicates that the server is ready to accept Telnet commands. From here, you can send SMTP commands to interact with the server, such as initiating an email transmission.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sending an Email via Telnet
&lt;/h3&gt;

&lt;p&gt;Sending an email through an SMTP server using Telnet involves a series of commands and interactions. This process can be invaluable for testing and verifying the server’s capability to handle email transmission. Below are the steps to email via Telnet:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. First, connect with your SMTP server using Telnet:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;telnet sandbox.smtp.mailtrap.io 2525&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Second, introduce yourself using the EHLO (or HELO) command:.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;EHLO example.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The HELO command initiates a basic SMTP session. It does not support ESMTP extensions like STARTTLS, essential for upgrading to a secure connection using the TLS (Transport Layer Security) protocol. The server will list the supported SMTP extensions in the response, typically starting with 250.&lt;/p&gt;

&lt;p&gt;For example, you may see:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;250-sandbox.smtp.mailtrap.io&lt;br&gt;
250-PIPELINING&lt;br&gt;
250-SIZE 10485760&lt;br&gt;
250-ETRN&lt;br&gt;
250-STARTTLS&lt;br&gt;
250-AUTH LOGIN PLAIN&lt;br&gt;
250-ENHANCEDSTATUSCODES&lt;br&gt;
250-8BITMIME&lt;br&gt;
250 DSN&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Set the email sender with the MAIL FROM command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MAIL FROM: &amp;lt;sender@example.com&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Set the email recipient with the RCPT TO command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;RCPT TO: &amp;lt;recipient@example.com&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Compose the email starting with the DATA command, then the email content, and ending with a period (.) on a new line.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;`DATA&lt;br&gt;
From: &lt;a href="mailto:sender@example.com"&gt;sender@example.com&lt;/a&gt;&lt;br&gt;
To: &lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;&lt;br&gt;
Subject: Telnet email on &lt;/p&gt;

&lt;p&gt;This is my first plain text test email message sent using the Telnet client on Windows`&lt;br&gt;
.&lt;br&gt;
&lt;strong&gt;6. Lastly, terminate the session with the QUIT command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of a complete Telnet session for sending an email, including all the commands and the expected responses from the SMTP server after each command:&lt;/p&gt;

&lt;p&gt;`telnet sandbox.smtp.mailtrap.io 2525&lt;br&gt;
220 sandbox.smtp.mailtrap.io ESMTP server ready&lt;br&gt;
EHLO example.com&lt;br&gt;
250-sandbox.smtp.mailtrap.io Hello &lt;br&gt;
250-SIZE 37748736&lt;br&gt;
250-PIPELINING&lt;br&gt;
250-DSN&lt;br&gt;
250-ENHANCEDSTATUSCODES&lt;br&gt;
250-STARTTLS&lt;br&gt;
250-X-ANONYMOUSTLS&lt;br&gt;
250-AUTH NTLM&lt;br&gt;
250-X-EXPS GSSAPI NTLM&lt;br&gt;
250-8BITMIME&lt;br&gt;
250-BINARYMIME&lt;br&gt;
250-CHUNKING&lt;br&gt;
250 XRDST&lt;br&gt;
MAIL FROM: &lt;a href="mailto:sender@example.com"&gt;sender@example.com&lt;/a&gt;&lt;br&gt;
250 2.1.0 Sender OK&lt;br&gt;
RCPT TO: &lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt; &lt;br&gt;
250 2.1.5 Recipient OK&lt;br&gt;
DATA&lt;br&gt;
354 Start mail input; end with .&lt;br&gt;
From: &lt;a href="mailto:sender@example.com"&gt;sender@example.com&lt;/a&gt;&lt;br&gt;
To: &lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt; &lt;br&gt;
Subject: Telnet email &lt;/p&gt;

&lt;p&gt;My first test message sent via the Telnet client on Microsoft's Windows&lt;br&gt;
.&lt;br&gt;
250 2.0.0 Ok: queued as ABC123456789&lt;br&gt;
QUIT&lt;br&gt;
221 2.0.0 Service closing transmission channel`&lt;/p&gt;

&lt;h3&gt;
  
  
  Verifying the Email Delivery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check Server Responses: The quickest and simplest way to verify delivery is by observing the responses from the SMTP server during the Telnet session. After you complete the email composition and send it, the server will respond to your email’s status.&lt;/li&gt;
&lt;li&gt;Inspect Queue Confirmation: A typical positive response after sending an email via Telnet is an acknowledgment from the server that the email has been queued. For example:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;250 2.0.0 Ok: queued as &amp;lt;the item id in the queue&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Examine Server Logs: You can examine the SMTP server’s logs beyond the immediate session. These logs typically record the server’s action, including email receipt, processing steps, and final delivery.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Telnet SMTP Testing Limitations and Challenges
&lt;/h2&gt;

&lt;p&gt;While Telnet has been a longstanding tool for SMTP testing, it presents several challenges, including the lack of automated testing capabilities and difficulty handling encrypted connections, such as those requiring SSL (Secure Sockets Layer) protocols.&lt;/p&gt;

&lt;p&gt;These limitations point to the need for a more advanced and efficient solution. A solution like Mailtrap Email Testing is part of the comprehensive Mailtrap Email Delivery Platform, including Email Sending.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy4lkr5yobemw2r4s5vk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy4lkr5yobemw2r4s5vk.png" alt="Mailtrap's dashboard" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking on &lt;a href="https://mailtrap.io/blog/telnet-smtp-test/"&gt;this link&lt;/a&gt; will redirect you to the Mailtrap blog post, where you can find more information about SMTP testing and sending. &lt;/p&gt;

</description>
      <category>smtp</category>
      <category>telnet</category>
      <category>beginners</category>
      <category>emailtesting</category>
    </item>
    <item>
      <title>SMTP Providers Compared: Choose the Best One for Sending Transactional and Marketing Emails</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Wed, 31 Jan 2024 14:16:46 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/smtp-providers-compared-choose-the-best-one-for-sending-transactional-and-marketing-emails-1geg</link>
      <guid>https://forem.com/denyskontorskyy/smtp-providers-compared-choose-the-best-one-for-sending-transactional-and-marketing-emails-1geg</guid>
      <description>&lt;p&gt;Picture this: You’ve crafted the perfect email, the content is spot-on, and you’re ready to hit Send… But wait; are you sure your emails are going to reach their destination? &lt;/p&gt;

&lt;p&gt;The answer largely depends on the &lt;strong&gt;SMTP providers. These unsung heroes of email delivery&lt;/strong&gt; work behind the scenes to ensure your messages reach their intended recipients promptly and reliably. &lt;/p&gt;

&lt;p&gt;In this article, we’ll leap into the realm of the given providers, unveiling the top three players in the industry. &lt;/p&gt;

&lt;p&gt;From need-to-have features to cost-effective solutions, we’ll explore the ins and outs of each provider, helping you &lt;strong&gt;make an informed choice&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;But before we start with the nitty-gritty, let’s have a quick overview of the contenders. &lt;/p&gt;

&lt;h2&gt;
  
  
  Best SMTP providers: a quick summary
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6rapwwio5yy6yhkzkuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6rapwwio5yy6yhkzkuf.png" alt="Image description" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mailtrap Email Delivery Platform
&lt;/h3&gt;

&lt;p&gt;Mailtrap &lt;strong&gt;Email Delivery Platform&lt;/strong&gt;, offers both &lt;a href="https://mailtrap.io/email-sandbox/"&gt;Email Testing&lt;/a&gt; and &lt;a href="https://mailtrap.io/email-sending/"&gt;Email Sending&lt;/a&gt; solutions. It provides a secure environment for testing emails, analyzing and fixing errors, and ensuring deliverability. &lt;/p&gt;

&lt;p&gt;There’s a variety of features like &lt;strong&gt;helicopter-view dashboards&lt;/strong&gt;, &lt;strong&gt;deliverability alerts&lt;/strong&gt;, &lt;strong&gt;email logs&lt;/strong&gt;, and more. Although it has a free tier that allows up to 1,000 emails per month, high-volume businesses might need to opt for the paid plans.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/register/signup?ref=header"&gt;Try Mailtrap Now&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Twilio’s SendGrid
&lt;/h3&gt;

&lt;p&gt;As one of the largest SMTP providers, SendGrid offers diverse sending options and supports a wide range of email infrastructures. However, it may not be ideal for marketers requiring advanced segmentation and automation features. &lt;/p&gt;

&lt;p&gt;SendGrid also offers varying levels of customer support depending on the plan. While it has a free plan, access to more advanced features and capabilities requires premium subscriptions. For more info on SendGrid, &lt;a href="https://mailtrap.io/blog/smtp-providers/#SMTP-provider-2-Twilio-SendGrid"&gt;jump here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Amazon SES
&lt;/h3&gt;

&lt;p&gt;Amazon’s Simple Email Service (SES) is a cloud-based, cost-effective service designed for businesses of all sizes. SES’s strength lies in its scalability, but integrating it can be labor-intensive and time-consuming because it requires technical expertise. &lt;/p&gt;

&lt;p&gt;SES lacks detailed reporting on email metrics and doesn’t provide a testing environment like Mailtrap. But there are generous free plans if your only focus is on the price.&lt;/p&gt;

&lt;p&gt;So far so good, however, the devil is in the details. So, the following sections dive deep into the technical criteria you should know to make an educated choice. For more info on SES, &lt;a href="https://mailtrap.io/blog/smtp-providers/#SMTP-provider-3-Amazon-SES"&gt;jump here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criteria to consider when choosing an SMTP provider
&lt;/h2&gt;

&lt;p&gt;A reliable SMTP (Simple Mail Transfer Protocol) provider is more than just the one with an appealing interface or a catchy name. &lt;/p&gt;

&lt;p&gt;Choose well, and you’ll get a &lt;strong&gt;balance of deliverability&lt;/strong&gt;, &lt;strong&gt;reputation&lt;/strong&gt;, &lt;strong&gt;pricing&lt;/strong&gt;, and &lt;strong&gt;customer support&lt;/strong&gt;; all aimed at helping your emails reach the recipients without a hitch. &lt;/p&gt;

&lt;p&gt;Now, we’ll help you figure out how to evaluate the best SMTP service providers and select the one that ticks all the right boxes. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deliverability
&lt;/h3&gt;

&lt;p&gt;Remember that perfect email from the intro? It’d be frustrating to realize that the email keeps landing in the recipient’s spam folder. Though, your frustration can be easily avoided. &lt;/p&gt;

&lt;p&gt;If your SMTP service provider has a &lt;strong&gt;strong focus on email deliverability&lt;/strong&gt;, there’s little to worry about. On that note, an ideal provider should offer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/email-authentication/"&gt;Email authentication&lt;/a&gt; to be trusted by ESPs&lt;/li&gt;
&lt;li&gt;Bounces and &lt;a href="https://mailtrap.io/blog/avoid-spam-filters/"&gt;spam complaints&lt;/a&gt; monitoring&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/what-are-webhooks-and-how-to-use-them/"&gt;Webhooks&lt;/a&gt; for real-time event notification&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://help.mailtrap.io/article/95-suppressions-list"&gt;Suppression lists&lt;/a&gt; to manage recipients for both transactional and marketing emails &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, providers like Google’s free SMTP service and M&lt;a href="https://mailtrap.io/pricing/?tab=api"&gt;ailrap Email Sending Free Plan&lt;/a&gt; are available for individuals and organizations looking for a zero-investment solution to send emails. Yet, you get all features mentioned above to help with deliverability. &lt;/p&gt;

&lt;p&gt;But analyze your emailing requirements closely before choosing a free SMTP server as there are other limitations – number of emails, email logs retention, user management, etc. &lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;As your email needs grow, you’d want an SMTP provider that can scale with your business. &lt;/p&gt;

&lt;p&gt;Consider the volume of emails you anticipate sending and whether the provider offers flexible plans or pricing tiers to accommodate your growth. Scalability is crucial to avoid hitting sending limits or facing sudden cost increases. &lt;/p&gt;

&lt;p&gt;For example, &lt;a href="https://mailtrap.io/pricing/?tab=api"&gt;Mailtrap Email Sending Individual 10K&lt;/a&gt; plan starts at 10K emails a month for $10. But you can &lt;strong&gt;scale up to 100K emails a month on the same plan without paying 10x the price&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Reliability
&lt;/h3&gt;

&lt;p&gt;Whichever way you look at it, the r*&lt;em&gt;eliability of an SMTP email delivery service is paramount&lt;/em&gt;*. &lt;/p&gt;

&lt;p&gt;You need an SMTP provider that guarantees &lt;strong&gt;high uptime&lt;/strong&gt; and &lt;strong&gt;minimal service interruptions&lt;/strong&gt;. Downtime can lead to missed opportunities, frustrated customers, and a negative impact on your business. &lt;/p&gt;

&lt;p&gt;Look for providers with a &lt;strong&gt;track record of reliability&lt;/strong&gt;, &lt;strong&gt;redundant infrastructure&lt;/strong&gt;, and robust &lt;strong&gt;disaster recovery mechanisms&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Sounds cool, but what does this actually mean, and how to look for it?&lt;/p&gt;

&lt;p&gt;In the context of SMTP providers, redundant infrastructure would involve having &lt;strong&gt;multiple servers&lt;/strong&gt;, &lt;strong&gt;network connections&lt;/strong&gt;, and &lt;strong&gt;storage systems to prevent single points of failure&lt;/strong&gt; and minimize downtime. &lt;/p&gt;

&lt;p&gt;Knowing that, it’s worth considering a provider that offers the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple data centers or server locations&lt;/li&gt;
&lt;li&gt;Load balancing and failover mechanisms&lt;/li&gt;
&lt;li&gt;Network redundancy (redundant network connections from different providers)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Mailtrap offers &lt;a href="https://mailtrap.io/blog/actionmailer-balancer/"&gt;ActionMailer balancer&lt;/a&gt; you can use to further strengthen your email infrastructure if one SMTP email service fails. &lt;a href="https://github.com/railsware/actionmailer-balancer"&gt;Check it out at GitHub&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;As for the robust disaster recovery mechanisms, these involve having &lt;strong&gt;comprehensive plans and processes in place to recover from major disruptions&lt;/strong&gt;, such as natural disasters, system failures, or cyber-attacks. &lt;/p&gt;

&lt;p&gt;These mechanisms ensure that the SMTP provider can &lt;strong&gt;quickly restore operations and maintain service availability to minimize downtime and data loss&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here are some examples of best practices, though a lot of providers won’t be super-explicit about the exact methodology applied due to safety reasons. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular data backups&lt;/strong&gt;&lt;br&gt;
The provider should perform regular backups of email data to prevent data loss in case of a disaster or system failure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replication and synchronization&lt;/strong&gt; &lt;br&gt;
Critical data, such as user accounts and email configurations, should be replicated and synchronized across multiple servers or data centers to ensure redundancy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failover and failback procedures&lt;/strong&gt; &lt;br&gt;
The provider should have documented processes for transitioning operations to backup systems during a disaster and for reverting back to the primary systems once the situation is resolved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing and validation&lt;/strong&gt;&lt;br&gt;
Disaster recovery plans should be regularly tested and validated to ensure their effectiveness and identify any potential gaps or weaknesses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Features and Integration
&lt;/h3&gt;

&lt;p&gt;Depending on your specific needs, you may require features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.mailtrap.io/article/88-statistics"&gt;In-depth email analytics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A/B testing &lt;/li&gt;
&lt;li&gt;Customizable templates &lt;/li&gt;
&lt;li&gt;Easy integration with CRMs or marketing automation tools. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think about the functionalities that are essential for your email campaigns and choose a provider that offers a comprehensive suite of tools to enhance your email marketing efforts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Support and Customer Service
&lt;/h3&gt;

&lt;p&gt;Let’s face it, even the best technology can encounter glitches or require assistance. That’s why reliable customer support is crucial when selecting an SMTP provider. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Look for providers that offer responsive support channels&lt;/strong&gt;, such as live chat, email, or phone support. &lt;/p&gt;

&lt;p&gt;Prompt and helpful assistance can save you time and frustration, ensuring that any issues or questions are addressed swiftly. Remember, &lt;a href="https://devrev.ai/blog/good-customer-service"&gt;good customer service&lt;/a&gt; can make all the difference when you need a helping hand.&lt;/p&gt;

&lt;p&gt;We’ve armed with all the critical criteria, so it’s time to choose the best provider. &lt;/p&gt;

&lt;h2&gt;
  
  
  SMTP provider #1. Mailtrap Email Delivery Platform
&lt;/h2&gt;

&lt;p&gt;Mailtrap is an &lt;strong&gt;Email Delivery Platform&lt;/strong&gt; that allows you to &lt;strong&gt;Test&lt;/strong&gt;, &lt;strong&gt;Send&lt;/strong&gt;, and &lt;strong&gt;Control your email infrastructure&lt;/strong&gt; – all in one place. &lt;/p&gt;

&lt;p&gt;It’s ideal for both businesses and individuals looking for &lt;strong&gt;a reliable SMTP provider with a specific focus on deliverability&lt;/strong&gt;. So, to no surprise, some of Mailtrap’s clients include StackOverflow, PayPal, Atlassian, and Adobe.&lt;/p&gt;

&lt;p&gt;Note that Mailtrap offers both &lt;a href="https://mailtrap.io/email-sandbox/"&gt;Email Tesing&lt;/a&gt; and &lt;a href="https://mailtrap.io/email-sending/"&gt;Email Sending&lt;/a&gt;. The testing solution is a fully integrated sandbox allowing users to capture SMTP traffic in non-production environments. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1di1hruf25p9x3pem0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1di1hruf25p9x3pem0o.png" alt="Image description" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that, you prevent unwanted emails from reaching users during the testing phase. Plus, you can &lt;strong&gt;analyze and fix HTML/CSS errors in your emails&lt;/strong&gt;, ensuring they look and work as expected without spamming your audience.&lt;/p&gt;

&lt;p&gt;On the other hand, &lt;a href="https://mailtrap.io/email-sending/"&gt;Mailtrap Email Sending&lt;/a&gt; is a reliable transactional email service. It provides high-deliverability email infrastructure and effortless maintenance. The key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Helicopter-view dashboards&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deliverability alerts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email logs&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deliverability stats for all Mailbox Providers&lt;/strong&gt; (Office 365, Outlook, Gmail, Google Workspace, and more)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email categories&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhooks&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email templates&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, Mailtrap is soon to release Bulk Emails – an email marketing service you can use within the same Email Sending plan as transactional emails. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/marketing"&gt;Fill out this form and take one of the first few hundred seats&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  The benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Testing and Validation&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As mentioned, you can use Mailtrap to &lt;strong&gt;test and validate your emails in a staging environment&lt;/strong&gt; before sending them to actual recipients. This helps to prevent any errors or issues from affecting your users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error Analysis&lt;/strong&gt;
Mailtrap allows you to &lt;strong&gt;capture SMTP traffic and analyze your email for any HTML/CSS errors&lt;/strong&gt;. This ensures that your emails look and work as they should when they reach your users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u8o5f0jiz0qz8va51kv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u8o5f0jiz0qz8va51kv.png" alt="Image description" width="800" height="738"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;** Integration**
You can easily integrate Mailtrap with your application and start sending emails to your recipients’ inboxes. You just need to copy-paste SMTP credentials and verify a domain to get started. Or use our &lt;a href="https://api-docs.mailtrap.io/?_ga=2.139997427.1354548631.1688386896-1401282675.1644409633"&gt;API and SDK libs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important Note: &lt;a href="https://api-docs.mailtrap.io/docs/mailtrap-api-docs/a2041e813d169-email-testing-api"&gt;Testing&lt;/a&gt;, S&lt;a href="https://api-docs.mailtrap.io/docs/mailtrap-api-docs/93dda88d4c68e-email-sending-api"&gt;ending&lt;/a&gt;, and Bulk [&lt;a href="https://mailtrap.io/marketing"&gt;Coming Soon&lt;/a&gt;] Email APIs are different. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scalable and secure cloud-based infrastructure&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We took the best practices for building email infrastructure and infused them with the latest and greatest in security, load balancing, and system redundancy. Then, we brought everything to the cloud for your convenience. &lt;/p&gt;

&lt;p&gt;But don’t take our word for it. &lt;a href="https://mailtrap.io/register/signup?ref=header"&gt;Test it out yourself&lt;/a&gt; and feel free to tell us how it feels. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt;
Mailtrap offers &lt;strong&gt;unique monitoring capabilities&lt;/strong&gt; to control your email infrastructure performance and &lt;strong&gt;troubleshoot unexpected sending issues&lt;/strong&gt; easily and fast. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros &amp;amp; cons
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mailtrap &lt;strong&gt;effectively captures outgoing mail in non-production environments&lt;/strong&gt;, preventing unwanted emails from reaching users during testing.&lt;/li&gt;
&lt;li&gt;It offers &lt;strong&gt;comprehensive error analysis and troubleshooting features&lt;/strong&gt;, allowing you to fix any issues before your emails reach your users.&lt;/li&gt;
&lt;li&gt;There are &lt;a href="https://help.mailtrap.io/article/12-getting-started-guide"&gt;clear setup instructions&lt;/a&gt; for many different project types, making it easy to integrate both Mailtrap Sending and Testing into your application.&lt;/li&gt;
&lt;li&gt;Mailtrap provides a secure and reliable infrastructure for production emails. Plus, there’s a team of people to ensure our systems and IPs are spammer-free without making you fill out lengthy verification forms. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mailtrap’s free tier has a limit of 1,000 emails per month, which may not be sufficient for businesses with high email volumes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;As mentioned, Mailtrap offers a free tier that allows users to send up to 1,000 emails per month. This free plan is quite generous, especially since it includes webhooks, email analytics, suppression management, and more. &lt;/p&gt;

&lt;p&gt;For businesses with higher email volumes, &lt;a href="https://mailtrap.io/pricing/"&gt;Mailtrap offers several paid&lt;/a&gt; plans with higher email limits, starting at 10K emails a month for $10.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/register/signup?ref=header"&gt;Try Mailtrap Now&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  SMTP provider #2 – Twilio SendGrid
&lt;/h2&gt;

&lt;p&gt;As one of the oldest and biggest SMTP providers, Twilio’s SendGrid needs little introduction. It’s an email service provider with a strong focus on the diversity of sending options with a host of different features to support email infrastructure. &lt;/p&gt;

&lt;p&gt;But why does SendGrid take second place? &lt;/p&gt;

&lt;p&gt;Twilio’s SMTP relay service and API, may not be the best fit for marketers looking for a comprehensive email marketing solution. More demanding users may find it’s in need of an update in areas such as advanced segmentation and automation. &lt;/p&gt;

&lt;p&gt;Also, SendGrid has different support levels depending on your plan. On the other hand, Mailtrap provides equal support for all its users. &lt;/p&gt;

&lt;h3&gt;
  
  
  The benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email Deliverability&lt;/strong&gt;
SendGrid’s primary focus is on ensuring your emails reach the recipients’ inbox and not their spam folders, which is a significant advantage for users focusing on this aspect. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But take this with a grain of salt.&lt;/p&gt;

&lt;p&gt;Depending on your plan, and the shared IP assigned to you, the delivery rates might not be as high as you expect. Ideally, you should opt for a dedicated IP with SendGrid. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Analytics&lt;/strong&gt;
SendGrid offers detailed reporting functionality that allows you to track emails by category and campaign. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, the level of detail with SendGrid’s analytics is a blessing and a curse. &lt;/p&gt;

&lt;p&gt;Data tables may appear overwhelming and, at the same time, you might need to keep clicking through menus to find a specific data point. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email Editor&lt;/strong&gt; 
SendGrid provides a sophisticated email editor that allows you to add tags to your emails with common customer information, such as name and location. That helps personalize each campaign individually. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, if we’re perfectly honest, SendGrid’s drag and drop editor could be more convenient than Mailtrap’s Email Templates. Ours is mostly geared towards developers, whereas SendGrid’s could be easier to navigate for non-tech teams. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pros &amp;amp; cons
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SendGrid provides a useful dashboard and automatic tracking for clicks, links, and Google Analytics integration.&lt;/li&gt;
&lt;li&gt;It offers a separate API service that uses webhooks to ensure seamless data flow between different solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SendGrid’s design can be confusing. Simply put, there’s a bit of a learning curve, and in time, you get the hang of it. &lt;/li&gt;
&lt;li&gt;As mentioned, SendGrid lacks robust segmentation and automation features, which can limit its usefulness for marketers looking to create highly tailored complex campaigns.&lt;/li&gt;
&lt;li&gt;Lastly, if you’re on one of the lower plans, chances are you’ll be waiting for customer service quite a bit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;SendGrid does offer a free plan, but it is notably limited compared to Mailtrap’s offering. For additional features and capabilities, SendGrid offers several paid plans. However, the full functionality of email automation is only available to premium users. The specific pricing details for these plans can be found on SendGrid’s website.&lt;/p&gt;

&lt;h2&gt;
  
  
  SMTP provider #3 – Amazon SES
&lt;/h2&gt;

&lt;p&gt;Amazon Simple Email Service (SES) is a &lt;strong&gt;cloud-based email-sending service&lt;/strong&gt; designed to send emails quickly and securely. It’s a &lt;strong&gt;reliable, cost-effective SMTP provider&lt;/strong&gt; for businesses of all sizes, particularly if they’re on a budget.&lt;/p&gt;

&lt;p&gt;However, integrating SES is labor-intensive and can be time-consuming. Typically, you need a dev experienced in email infrastructure, AWS integrations in particular. So, make sure to factor that in when considering Amazon as an option. &lt;/p&gt;

&lt;p&gt;Nevertheless, with pay-as-you-go pricing based on the number of emails sent, it allows you to scale email sending without breaking the bank. That makes Amazon SES a strong contender, assuming you have the experience or human resources to integrate it. &lt;/p&gt;

&lt;h3&gt;
  
  
  The benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;br&gt;
Amazon SES can handle a high volume of emails, making it suitable for organizations with large email lists or that need to send a large number of emails on a regular basis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deliverability&lt;/strong&gt;&lt;br&gt;
Amazon SES uses machine learning and other techniques to help improve the deliverability of emails, increasing the likelihood that emails will be delivered to their intended recipients. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration&lt;/strong&gt; &lt;br&gt;
Amazon SES can be easily integrated with other AWS services and third-party applications, allowing organizations to build custom email solutions or integrate email communication into their existing systems.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But remember, these are heavily technical integrations where you might need help from an experienced developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros &amp;amp; cons
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low cost, especially for high email volumes.&lt;/li&gt;
&lt;li&gt;High deliverability and scalability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex setup and configuration, particularly for those who are not experienced with AWS.&lt;/li&gt;
&lt;li&gt;It lacks detailed reporting on email opens, clicks, bounces, and other metrics.&lt;/li&gt;
&lt;li&gt;Unlike Mailtrap, it does not provide a testing environment to catch errors before emails reach users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: It’s possible to use a third-party integration to get more deliverability data from SES. Then again, it means more programming and additional cost. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Amazon SES offers both a free tier and paid plans, with pricing varying based on the number of emails sent. The free tier allows you to send up to 62,000 emails per month when sending from an Amazon EC2 instance or AWS Lambda function.&lt;/p&gt;

&lt;p&gt;Paid plans start at $0.10 per 1,000 emails sent. &lt;/p&gt;

&lt;h2&gt;
  
  
  Summing up
&lt;/h2&gt;

&lt;p&gt;In the realm of SMTP providers, Mailtrap, SendGrid, and Amazon SES stand out with their distinct offerings. Mailtrap’s focus on the platform approach (Test, Send, and Control) makes it an ideal choice for developers. Plus, it provides generous free email limits for both Testing and Sending. &lt;/p&gt;

&lt;p&gt;SendGrid handles transactional emails well and offers a free email limit of 100 emails/day. &lt;/p&gt;

&lt;p&gt;Meanwhile, Amazon SES caters to high-volume transactional email needs, allowing up to 62,000 free emails per month on a pay-as-you-go pricing model. But you might not be able to integrate it on your own. &lt;/p&gt;

&lt;p&gt;Whichever provider you prefer, make sure to choose the one that gives you the most optimal balance of key features, price, and deliverability. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb3dckx6rsr3zddclkdh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb3dckx6rsr3zddclkdh.png" alt="Image description" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We appreciate the you chose this article to find out the &lt;a href="https://mailtrap.io/blog/smtp-providers/"&gt;best SMTP providers&lt;/a&gt;. If you want to find more interesting content on related topics, follow Mailtrap blog!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Gmail and Yahoo Email Sender Requirements Update: What’s Changed?</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Tue, 30 Jan 2024 06:47:19 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/gmail-and-yahoo-email-sender-requirements-update-whats-changed-k2</link>
      <guid>https://forem.com/denyskontorskyy/gmail-and-yahoo-email-sender-requirements-update-whats-changed-k2</guid>
      <description>&lt;p&gt;In response to growing security and deliverability concerns, Google and Yahoo are enforcing new requirements for email senders, with a significant focus on bulk email communication. &lt;/p&gt;

&lt;p&gt;Effective February 1, 2024, these changes &lt;strong&gt;transition several best practices into mandatory protocols&lt;/strong&gt;. This guide will help you understand these new rules and how to adjust your email strategies accordingly.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/IOl_FOcOSk0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are Google and Yahoo implementing email-sending requirements
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.google/products/gmail/gmail-security-authentication-spam-protection/"&gt;Google&lt;/a&gt; and &lt;a href="https://blog.postmaster.yahooinc.com/post/730172167494483968/more-secure-less-spam"&gt;Yahoo&lt;/a&gt; are updating their email-sending rules &lt;strong&gt;to improve email security and ensure emails are delivered more effectively&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As the email landscape becomes increasingly vulnerable to threats like spam and phishing attacks, these email giants are stepping up their efforts to safeguard users. &lt;/p&gt;

&lt;p&gt;The updates aim to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tighten security measures&lt;/li&gt;
&lt;li&gt;ensure email source authenticity &lt;/li&gt;
&lt;li&gt;protect email recipients from unwanted content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By enforcing stricter standards, Google and Yahoo are aiming to improve the user experience and &lt;strong&gt;promote responsible email practices among senders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, in short, the update is good news for everyone. &lt;strong&gt;Bulk email senders (starting from 5,000 emails daily)&lt;/strong&gt; just need to know how to adapt accordingly.&lt;/p&gt;

&lt;p&gt;It’s important to note that &lt;strong&gt;these requirements will become standard for all email senders over time&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detailed overview of the updates
&lt;/h2&gt;

&lt;p&gt;Let’s dive deeper into the specifics of these updates, starting with a critical area: the adoption of stricter email authentication protocols.&lt;/p&gt;

&lt;h3&gt;
  
  
  SPF, DKIM, and DMARC authentication requirements
&lt;/h3&gt;

&lt;p&gt;The most significant change comes from enhanced &lt;a href="https://mailtrap.io/blog/email-authentication"&gt;email authentication protocols&lt;/a&gt;. These protocols are designed to strengthen proven ownership of email domains and establish you as an authorized sender, making it harder for malicious actors to exploit email systems.&lt;/p&gt;

&lt;p&gt;The new guidelines &lt;strong&gt;require the implementation of SPF, DKIM, and DMARC for bulk email senders&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SPF&lt;/strong&gt;: This protocol validates emails by verifying that they are sent from authorized domains. It’s crucial for preventing email spoofing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Learn to set up SPF for your domain in our comprehensive &lt;a href="https://mailtrap.io/blog/spf-records-explained/"&gt;Sender Policy Framework guide&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DKIM&lt;/strong&gt;: This adds a digital signature to each email, ensuring its authenticity and that it hasn’t been tampered with during transmission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Read our dedicated article for detailed steps on &lt;a href="https://mailtrap.io/blog/dkim/"&gt;implementing DomainKeys Identified Mail&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DMARC&lt;/strong&gt;: This policy framework utilizes SPF and DKIM to provide a comprehensive email authentication approach, reporting discrepancies and non-compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Explore our step-by-step &lt;a href="https://mailtrap.io/blog/dmarc-explained/"&gt;Domain-based Message Authentication, Reporting, and Conformance guide&lt;/a&gt; for more information.&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Lower spam complaint rate threshold
&lt;/h3&gt;

&lt;p&gt;The next significant update is l*&lt;em&gt;owering the acceptable spam complaint rate&lt;/em&gt;*. This change aims to reduce the volume of unwanted or irrelevant emails reaching users and enhance the overall quality of email communication.&lt;/p&gt;

&lt;p&gt;Maintaining a spam complaint rate below 0.1% is crucial for consistent deliverability and &lt;strong&gt;avoiding the high-risk threshold of 0.3%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To comply, &lt;strong&gt;senders must refine their:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;targeting strategies &lt;/li&gt;
&lt;li&gt;personalize content &lt;/li&gt;
&lt;li&gt;continuously monitor feedback from recipients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;a href="https://www.gmail.com/postmaster/"&gt;Google Postmaster Tools&lt;/a&gt; can offer crucial insights into the performance of your email domain.&lt;/p&gt;

&lt;p&gt;_For a structured approach to minimizing your spam complaint rate and ensuring compliance, read this &lt;a href="https://mailtrap.io/blog/avoid-spam-filters/"&gt;comprehensive guide&lt;/a&gt;. &lt;br&gt;
_&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced DNS protocols and email security compliance
&lt;/h3&gt;

&lt;p&gt;Furthermore, the updates include a &lt;strong&gt;requirement for enhanced DNS protocols and reverse DNS (rDNS) setups&lt;/strong&gt;, which are vital for improving email traceability and reducing the risk of email fraud.&lt;/p&gt;

&lt;p&gt;This means &lt;strong&gt;sending domains must have a clear and verifiable link to their corresponding IP addresses&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In addition, there is a &lt;strong&gt;requirement to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;comply with &lt;a href="https://www.rfc-editor.org/rfc/rfc5322"&gt;RFC 5322 standards&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;properly configure &lt;a href="https://mailtrap.io/blog/ptr-records"&gt;PTR records&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;use &lt;a href="https://mailtrap.io/blog/email-encryption/"&gt;TLS connections&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  One-Click Unsubscribe Option
&lt;/h3&gt;

&lt;p&gt;Lastly, the new updates introduce &lt;strong&gt;a requirement for a one-click unsubscribe option in emails&lt;/strong&gt;. This change empowers recipients, giving them a straightforward way to opt out of receiving emails. From the sender’s point of view, this update is particularly helpful since it will decrease the amount of spam complaints. &lt;/p&gt;

&lt;p&gt;But let’s be honest; incorporating an easy unsubscribe option is not just a “compliance thing” but a best email practice and the right thing to do for your audience. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;For best practices on seamlessly including an unsubscribe option, &lt;a href="https://mailtrap.io/blog/list-unsubscribe-header/"&gt;check out this guide&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The role of email infrastructure in bulk email sending
&lt;/h2&gt;

&lt;p&gt;Now, all of these new rules are important and, when followed, will definitely improve things for bulk email senders. However, your e*&lt;em&gt;mail infrastructure remains the backbone of your email delivery process&lt;/em&gt;*, and having the right setup is key to meeting the new requirements and any future emerging ones.&lt;/p&gt;

&lt;p&gt;This is exactly where &lt;a href="https://mailtrap.io/bulk-email-service/"&gt;Mailtrap’s Bulk Email Stream&lt;/a&gt; comes in useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gijikra5dwuwdq7tmic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gijikra5dwuwdq7tmic.png" alt="Image description" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature allows you to send bulk emails at the price of transactional. Furthermore, since the &lt;a href="https://dev.toMailtrap%20Email%20Delivery%20Platform"&gt;Mailtrap Email Delivery Platform&lt;/a&gt; accommodates marketing and transactional emails, you can handle all your sending needs with one platform. Having separate sending streams will enhance your deliverability and improve your overall email metrics. A clear stats overview for each stream enhances your ability to effectively monitor and optimize your email campaigns.&lt;/p&gt;

&lt;p&gt;In addition, Bulk Email Stream simplifies compliance with mandatory one-click unsubscribe links and headers for bulk emails.&lt;/p&gt;

&lt;p&gt;As well as these benefits, Bulk Email Stream offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smooth and secure setup&lt;/li&gt;
&lt;li&gt;The option to choose between an email API and an SMTP service&lt;/li&gt;
&lt;li&gt;Actionable in-depth analytics&lt;/li&gt;
&lt;li&gt;30-day email logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/bulk-email-service/"&gt;Bulk Email Sending With Mailtrap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For any questions or clarifications regarding these email updates and how Mailtrap’s Bulk Email Stream can benefit your email delivery, don’t hesitate to get in touch with us. We’re always ready to support you!&lt;/p&gt;

&lt;p&gt;We appreciate the you chose this article to know about &lt;a href="https://mailtrap.io/blog/gmail-yahoo-email-sender-requirements/"&gt;Google email requirements&lt;/a&gt;. If you want to find more interesting content on related topics, follow Mailtrap blog!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Outlook Spam Filter Explained: A Step-by-Step Guide</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Mon, 29 Jan 2024 17:38:25 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/outlook-spam-filter-explained-a-step-by-step-guide-152j</link>
      <guid>https://forem.com/denyskontorskyy/outlook-spam-filter-explained-a-step-by-step-guide-152j</guid>
      <description>&lt;p&gt;Dealing with unwanted emails can be challenging, but the good news is that if you’re a Microsoft Outlook user, the system’s spam filter is a great help. &lt;/p&gt;

&lt;p&gt;In this article, I’ll explain how the Outlook Junk Email Filter works, its features, and how to use it effectively. This is a practical guide for anyone using Outlook who wants to keep their inbox clean and for those that are sending emails and want to avoid being flagged as spam.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Outlook spam filter?
&lt;/h2&gt;

&lt;p&gt;“Junk Email Filter” is a built-in feature of the Microsoft Outlook email client, protecting users against unwanted emails. This tool is a primary defense against spam emails and effectively reduces the influx of irrelevant content. &lt;/p&gt;

&lt;p&gt;Significantly evolving over the span of three decades, the spam filter is designed for practicality. The filter examines various aspects of incoming emails, such as the &lt;a href="https://mailtrap.io/blog/email-sender-reputation/"&gt;sender’s credibility&lt;/a&gt;, the structure of the email, and its content. By evaluating these elements, the filter categorizes emails to prioritize important messages and suppress less relevant ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does the Outlook spam filter work?
&lt;/h2&gt;

&lt;p&gt;The Outlook spam filter employs a combination of advanced technologies and user feedback to create a robust defense against spam. Let’s explore each component to understand how the filter maintains an organized and secure inbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heuristic analysis and user feedback:&lt;/strong&gt; This process involves examining emails for specific characteristics commonly associated with spam. These might include certain phrases, unusual sender information, suspicious attachments, or inconsistent patterns. An email combining these signs is flagged as a potential spam message.&lt;/p&gt;

&lt;p&gt;Complementing heuristic analysis is user feedback. The system learns from this action whenever a user marks an email as spam or not. This manual flagging helps the filter adjust to the user’s personal preferences and better understand the evolving nature of spam.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bayesian filtering and machine learning techniques:&lt;/strong&gt; This is a specialized form of machine learning based on statistical methods. It compares the content of incoming emails with the content of emails previously marked as spam or legitimate by the user. As it gathers more data over time, this method becomes increasingly accurate, learning from the user’s past actions to make better judgments about new emails.&lt;/p&gt;

&lt;p&gt;Beyond Bayesian filtering, the spam filter employs a variety of machine-learning techniques. These algorithms analyze large data sets to identify complex patterns and predict future behavior. They can detect new tactics spammers use, understand subtle nuances in email content, and configure the filter’s criteria for better accuracy and protection against phishing emails and other threats. &lt;/p&gt;

&lt;h3&gt;
  
  
  Unique features of an Outlook spam filter
&lt;/h3&gt;

&lt;p&gt;“Junk Email Filter” keeps your Outlook inbox clean, but it’s not just about blocking unwanted emails. It includes several features designed to provide a more personalized and efficient user experience that helps maintain a flow of important communications without interruption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focused inbox:&lt;/strong&gt; An automatic sorting feature that enhances email management by dividing your inbox into two tabs: ‘Focused’ for important emails and ‘Other’ for the others. Users can customize this feature by moving emails between tabs and training Outlook to adapt to their preferences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Junk email filter lists:&lt;/strong&gt; This feature allows you to control what’s considered spam by adding or blocking specific email addresses and maintaining a domains list for enhanced filtering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safe senders and recipients lists:&lt;/strong&gt; Add email addresses or domains to these lists to prevent messages from trusted contacts or mailing lists from being marked as junk.  &lt;/p&gt;

&lt;p&gt;Additionally, Outlook offers a &lt;a href="https://mailtrap.io/blog/email-feedback-loop"&gt;feedback loop service&lt;/a&gt;, letting users know when their emails are marked as spam. This feature is particularly useful for senders to understand and improve their &lt;a href="https://mailtrap.io/blog/email-deliverability/"&gt;email deliverability&lt;/a&gt; and to reduce false positives where legitimate emails are incorrectly classified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocked senders list:&lt;/strong&gt; By adding specific senders or domains to this list, you ensure their messages are automatically moved to the junk email folder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocked top-level domains and encodings lists:&lt;/strong&gt; If you receive unwanted emails from certain countries or regions or in different character sets, these lists block them efficiently. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to filter junk email and spam in Outlook?
&lt;/h2&gt;

&lt;p&gt;Effectively managing your spam filter settings in Outlook can significantly improve your email experience. Whether you’re using newer versions with enhanced capabilities and intuitive interfaces, older versions with basic functionalities, or the continuously updated Outlook Web App (OWA), each offers unique ways to manage junk email in your email account. &lt;/p&gt;

&lt;h3&gt;
  
  
  New versions
&lt;/h3&gt;

&lt;p&gt;_Outlook for Microsoft Office 365, Outlook 2021, Outlook 2019. _&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Access junk email settings:&lt;/strong&gt; On the Home tab, click Junk &amp;gt; Junk E-mail Options.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnnchwlyw8bxkcw2bqkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnnchwlyw8bxkcw2bqkj.png" alt="Image description" width="630" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Choose junk email protection level:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No automatic filtering:&lt;/strong&gt; Only emails from the Blocked Senders list are moved to Junk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low:&lt;/strong&gt; Filters only the most obvious spam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High:&lt;/strong&gt; Catches most email spam but may misidentify legitimate email messages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe lists only:&lt;/strong&gt; Only allows emails from your safe senders and safe recipients lists.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hr5m7a3a64icjxgmua0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hr5m7a3a64icjxgmua0.png" alt="Image description" width="636" height="746"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prevent legitimate emails from being classified as junk messages:&lt;/strong&gt; Use the safe senders and recipients tabs to add specific email addresses or domain names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block malicious senders:&lt;/strong&gt; Add email addresses or domains you want to block on the blocked senders tab.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block top-level domains and encodings:&lt;/strong&gt; Use the International tab to block emails from specific countries or in foreign languages.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Old versions
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Outlook 2007 and earlier&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Access junk email settings:&lt;/strong&gt; From the settings, select Actions &amp;gt; Junk E-mail &amp;gt; Junk E-mail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adjusting spam filter:&lt;/strong&gt; In the Options tab, switch the spam filter to Low or High, depending on your needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managing blocked senders list:&lt;/strong&gt; View and edit the senders that have been blocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Using the international tab:&lt;/strong&gt; Mark domains from selected countries as spam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handling misclassified emails:&lt;/strong&gt; Right-click on an email to add the sender to either the Blocked Senders List or the Safe Senders List.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Web app
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Accessing junk email settings:&lt;/strong&gt; Sign in to Outlook on the web, click Settings (gear icon), then View all Outlook settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuring junk email options:&lt;/strong&gt; Select Mail &amp;gt; Junk email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe senders and domains:&lt;/strong&gt; Add addresses to prevent them from being marked as junk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked senders and domains:&lt;/strong&gt; Add addresses to ensure their emails are treated as junk.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxbyitg7ilkc4z9jw1xs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxbyitg7ilkc4z9jw1xs.png" alt="Image description" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Adjusting filters and reporting:&lt;/strong&gt; Customize how Outlook handles junk email and reporting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;**&lt;em&gt;**Note&lt;/em&gt;*: The effectiveness of spam mail filtering can vary, and it’s always a good idea to periodically check the spam folder for legitimate emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to avoid an Outlook spam filter?
&lt;/h2&gt;

&lt;p&gt;To ensure your emails successfully reach their intended recipients and avoid the dreaded fate of landing in the spam folder, it’s important to have a strategic approach combined with some fundamental best practices. &lt;/p&gt;

&lt;p&gt;Here is a quick rundown of some action points to help you achieve this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand Outlook’s Spam Filter:&lt;/strong&gt; Learn what triggers the filter, including specific keywords and formatting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a Trusted Email Domain:&lt;/strong&gt; Ensure your &lt;a href="https://mailtrap.io/blog/email-domain-reputation/"&gt;domain is reputable&lt;/a&gt;, recognized, and trusted by your audience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Sender Reputation Untarnished:&lt;/strong&gt; Adopt email practices that support your &lt;a href="https://www.youtube.com/watch?v=v5mTMCqXHNU"&gt;email sender reputation&lt;/a&gt;, like avoiding emails to specific users, keeping complaint rates low, and regulating your sending frequency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Craft Clear, Engaging Subject Lines:&lt;/strong&gt; Balance clarity and engagement, avoiding vague or sensationalist language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Promote Email Engagement:&lt;/strong&gt; Include interactive content or calls to action to encourage responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintain a Clean Email List:&lt;/strong&gt; Regularly remove inactive or invalid addresses and offer an easy unsubscribe option.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track Email Performance:&lt;/strong&gt; Use analytics to understand recipient behavior and the effectiveness of your campaigns. These are just a few methods to bypass the spam filter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, it’s important to be aware of legal requirements like the &lt;a href="https://mailtrap.io/blog/can-spam-cold-emails/"&gt;CAN-SPAM Act&lt;/a&gt; when sending emails and ensure they’re compliant.&lt;/p&gt;

&lt;p&gt;These are just a few methods to bypass the spam filter. For a more comprehensive approach, I recommend reading our article on &lt;a href="https://mailtrap.io/blog/avoid-spam-filters/"&gt;preventing emails from landing in the spam folder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, let’s dive into how reliable email infrastructure can further enhance your email deliverability. A standout choice in this area is &lt;a href="https://mailtrap.io/"&gt;Mailtrap Email Delivery Platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/email-sending/"&gt;Mailtrap Email Sending&lt;/a&gt; is an efficient Email API and SMTP service with advanced monitoring features. It includes a helicopter-view dashboard, detailed reports for mailbox providers, an extended email history of up to 60 days, and timely alerts. These alerts encompass weekly comparisons and critical notifications for sudden metric drops.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ahlhdbru9n3h688mpkt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ahlhdbru9n3h688mpkt.png" alt="Image description" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/email-sandbox/"&gt;Mailtrap Email Testing&lt;/a&gt; offers a sandbox environment where users can safely inspect and debug emails in staging, development, and QA environments. This eliminates the risk of unintentionally spamming recipients.&lt;/p&gt;

&lt;p&gt;Additionally, with Email Testing, you can preview and analyze content for spam and validate HTML/CSS before sending emails to recipients’ inboxes.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tobie2e8kv0gnor7p9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tobie2e8kv0gnor7p9z.png" alt="Image description" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/register/signup"&gt;Try Mailtrap for Free&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://mailtrap.io/email-spam-checker/"&gt;Spam Checker&lt;/a&gt; plays an important role in evaluating the &lt;a href="https://mailtrap.io/blog/spamassassin-score/"&gt;spam score&lt;/a&gt; of your emails. Detailed analysis and actionable insights allow users to refine their email content, ensuring they adhere to best practices that maximize deliverability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeywx40jeolbvwf6orog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeywx40jeolbvwf6orog.png" alt="Image description" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, managing unwanted emails and ensuring yours don’t end up in spam folders in Outlook doesn’t have to be a headache. With the right use of the “Junk Email Filter” and understanding the dos and don’ts of email sending, you can keep a clean inbox and maintain good email deliverability rates. With these simple guidelines, you can confidently expect smooth sailing in the email world.&lt;/p&gt;

&lt;p&gt;Thank you for reading this article! Follow Mailtrap Blog and discover even more articles about &lt;a href="https://mailtrap.io/blog/outlook-spam-filter/"&gt;Outlook spam filters&lt;/a&gt;. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Telnet Basics for SMTP Testing: A Step-by-Step Guide</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Tue, 23 Jan 2024 12:24:46 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/telnet-basics-for-smtp-testing-a-step-by-step-guide-2gpg</link>
      <guid>https://forem.com/denyskontorskyy/telnet-basics-for-smtp-testing-a-step-by-step-guide-2gpg</guid>
      <description>&lt;p&gt;This guide delves into the fundamentals of using Telnet for SMTP testing. It offers a thorough walkthrough on setting it up across various operating systems and exploring alternative methods essential for network administrators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Telnet for Email Testing?
&lt;/h2&gt;

&lt;p&gt;Telnet emerges as a valuable tool if you’re exploring options for SMTP testing. Here’s a quick rundown on why it’s a solid choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Direct server interaction: Telnet operates over TCP (Transmission Control Protocol), enabling direct communication with mail servers. This is crucial for diagnosing connection issues and troubleshooting other various SMTP-related problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manual command execution: Its interface allows for manually sending SMTP commands and receiving server responses. This hands-on approach offers deep insights into server behavior and ensures correct configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authentication process testing: It plays a key role in testing SMTP authentication processes, which are vital for the security and integrity of email communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up Telnet: Windows, Linux, Mac
&lt;/h2&gt;

&lt;p&gt;Setting up Telnet varies across different operating systems. In this section, we’ll cover installing and configuring Telnet on Windows, Mac, and various Linux distributions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Before installation, ensure your firewall permits Telnet connections to avoid any connectivity issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing Telnet on Windows
&lt;/h3&gt;

&lt;p&gt;Windows users have different installation methods depending on their operating system version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Windows 8 and later:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the Command Prompt (cmd) with administrator privileges.&lt;br&gt;
Type this command and press Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dism /online /Enable-Feature /FeatureName:TelnetClient
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The dism command requires elevated permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Windows 7, Windows Server 2008 R2, Windows Server 2008, or Windows Vista:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the Command Prompt.&lt;br&gt;
Type the following command and press enter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkgmgr /iu:"TelnetClient" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using PowerShell (Applicable to Windows 8.1, Windows 10, Windows Server 2012 R2, or later):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open PowerShell as an administrator.&lt;br&gt;
Type the following command and press enter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installing Telnet on Mac
&lt;/h3&gt;

&lt;p&gt;Installing Telnet on a Mac involves using Homebrew, a popular package manager. If you don’t have it installed, follow the steps provided on the Homebrew Documentation.&lt;/p&gt;

&lt;p&gt;Once you have Homebrew set up, open the Terminal and enter the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install telnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see output similar to the following, indicating the progress of the installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;==&amp;gt; Fetching telnet
==&amp;gt; Downloading https://ghcr.io/v2/homebrew/core/telnet/manifests/64
######################################################################## 100.0%
==&amp;gt; Downloading https://ghcr.io/v2/homebrew/core/telnet/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf
==&amp;gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:cf76f3b47cf35efd4d271adf52227e463298005ec9b1ac586b629d5ad94522cf?se=2023-01-26T18%3A25%3A00Z&amp;amp;sig=YVwwx%2FEglPVEjx0gsrb6aN7O6e3D%2Fwk%2BPEMjjTRju7M%3D&amp;amp;sp=r&amp;amp;spr=h
######################################################################## 100.0%
==&amp;gt; Pouring telnet--64.arm64_monterey.bottle.tar.gz
 /opt/homebrew/Cellar/telnet/64: 4 files, 175.2KB
==&amp;gt; Running `brew cleanup telnet`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installing Telnet on Linux
&lt;/h3&gt;

&lt;p&gt;The installation of Telnet on Linux varies based on your distribution. For all distributions, you will be prompted to enter your administrator password. Type it in, press enter, and wait for the system to complete the installation before proceeding with further commands.&lt;br&gt;
Common commands for popular distributions are entered in the Terminal as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arch Linux and Manjaro:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo pacman -S inetutils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ubuntu, Kali Linux, Debian, and Linux Mint:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo apt install telnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Red Hat, Fedora, and CentOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo dnf install telnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How to Test SMTP with Telnet?&lt;br&gt;
To initiate an SMTP connection with a server via Telnet, use a command specifying the server’s address (domain name or IP address) and the port it listens on. For instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;telnet sandbox.smtp.mailtrap.io 2525
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command attempts to connect to the SMTP server at sandbox.smtp.mailtrap.io on port number 2525.&lt;/p&gt;

&lt;p&gt;Once the connection is successfully established, you should see a response from the SMTP server. For the above command, the response might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;220 sandbox.smtp.mailtrap.io ESMTP server ready
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This indicates that the server is ready to accept Telnet commands. From here, you can send SMTP commands to interact with the server, such as initiating an email transmission.&lt;/p&gt;

&lt;p&gt;Sending an Email via Telnet&lt;br&gt;
Sending an email through an SMTP server using Telnet involves a series of commands and interactions. This process can be invaluable for testing and verifying the server’s capability to handle email transmission. Below are the steps to email via Telnet:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. First, connect with your SMTP server using Telnet:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;telnet sandbox.smtp.mailtrap.io 2525
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Second, introduce yourself using the EHLO (or HELO) command:.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EHLO example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The HELO command initiates a basic SMTP session. It does not support ESMTP extensions like STARTTLS, essential for upgrading to a secure connection using the TLS (Transport Layer Security) protocol. The server will list the supported SMTP extensions in the response, typically starting with 250.&lt;/p&gt;

&lt;p&gt;For example, you may see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;250-sandbox.smtp.mailtrap.io
250-PIPELINING
250-SIZE 10485760
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Set the email sender with the MAIL FROM command.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAIL FROM: &amp;lt;sender@example.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Set the email recipient with the RCPT TO command.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RCPT TO: &amp;lt;recipient@example.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Compose the email starting with the DATA command, then the email content, and ending with a period (.) on a new line.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA
From: sender@example.com
To: recipient@example.com
Subject: Telnet email on 

This is my first plain text test email message sent using the Telnet client on Windows
.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;6. Lastly, terminate the session with the QUIT command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of a complete Telnet session for sending an email, including all the commands and the expected responses from the SMTP server after each command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;telnet sandbox.smtp.mailtrap.io 2525
220 sandbox.smtp.mailtrap.io ESMTP server ready
EHLO example.com
250-sandbox.smtp.mailtrap.io Hello 
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
MAIL FROM: &amp;lt;sender@example.com&amp;gt;
250 2.1.0 Sender OK
RCPT TO: &amp;lt;recipient@example.com&amp;gt; 
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with &amp;lt;CRLF&amp;gt;.&amp;lt;CRLF&amp;gt;
From: sender@example.com
To: recipient@example.com 
Subject: Telnet email 

My first test message sent via the Telnet client on Microsoft's Windows
.
250 2.0.0 Ok: queued as ABC123456789
QUIT
221 2.0.0 Service closing transmission channel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verifying the Email Delivery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check Server Responses: The quickest and simplest way to verify delivery is by observing the responses from the SMTP server during the Telnet session. After you complete the email composition and send it, the server will respond to your email’s status.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inspect Queue Confirmation: A typical positive response after sending an email via Telnet is an acknowledgment from the server that the email has been queued. For example:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;250 2.0.0 Ok: queued as &amp;lt;the item id in the queue&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Examine Server Logs: You can examine the SMTP server’s logs beyond the immediate session. These logs typically record the server’s action, including email receipt, processing steps, and final delivery.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Telnet SMTP Testing Limitations and Challenges
&lt;/h2&gt;

&lt;p&gt;While Telnet has been a longstanding tool for SMTP testing, it presents several challenges, including the lack of automated testing capabilities and difficulty handling encrypted connections, such as those requiring SSL (Secure Sockets Layer) protocols.&lt;/p&gt;

&lt;p&gt;These limitations point to the need for a more advanced and efficient solution. A solution like Mailtrap Email Testing is part of the comprehensive Mailtrap Email Delivery Platform, including Email Sending.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud6ggr37l8qlit8v22b2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud6ggr37l8qlit8v22b2.png" alt="Image description" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mailtrap Email Testing acts as a secure email sandbox, allowing you to inspect and debug emails in staging, development, and QA environments before sending them to recipients. Some of its key features include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A Fake SMTP Server to enable safe and isolated email testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HTML/CSS Checker to ensure your emails look as intended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spam Score Analysis to lower the likelihood of emails being marked as spam.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email Preview to see how your emails will look to the end-user across multiple devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiple Inboxes for managing different projects and stages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ready-to-use Integrations in more than 20 programming languages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started with Email Testing, make sure to check out our detailed guide.&lt;/p&gt;




&lt;p&gt;Thank you for exploring the ins and outs of SMTP testing with us in our comprehensive guide. To enhance your understanding and proficiency further, we invite you to check out Mailtrap's dedicated blog post on &lt;a href="https://mailtrap.io/blog/telnet-smtp-test/"&gt;Telnet SMTP testing&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>testing</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Sendgrid vs Mandrill vs Mailgun – How to Choose?</title>
      <dc:creator>Denys</dc:creator>
      <pubDate>Wed, 03 Jan 2024 14:35:56 +0000</pubDate>
      <link>https://forem.com/denyskontorskyy/sendgrid-vs-mandrill-vs-mailgun-how-to-choose-4kjg</link>
      <guid>https://forem.com/denyskontorskyy/sendgrid-vs-mandrill-vs-mailgun-how-to-choose-4kjg</guid>
      <description>&lt;p&gt;Are you just starting to work with email sending platforms or comparing solutions in order to switch? Which features matter the most? And how do you avoid getting lost in the wide variety of options? At Railsware we use several tools to communicate by email with our clients, candidates, Mailtrap users, and more. Let’s review some of the most popular email infrastructure services: &lt;a href="https://sendgrid.com/"&gt;Sendgrid&lt;/a&gt;, &lt;a href="https://mandrill.com/"&gt;Mandrill&lt;/a&gt;, and &lt;a href="https://www.mailgun.com/"&gt;Mailgun&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of emails: bulk and transactional
&lt;/h2&gt;

&lt;p&gt;Before we move on to the detailed analysis of each service, it’s important to define their use cases.&lt;/p&gt;

&lt;p&gt;Mailgun is an email service for developers designed for sending, receiving, and tracking emails. Sendgrid is a platform, which offers a set of options for both developers and marketers. Mandrill initially was a pure &lt;a href="https://mailtrap.io/blog/email-deliverability/"&gt;email delivery&lt;/a&gt; service but now it’s an add-on for the Mailchimp marketing platform. All of them offer services for both transactional and mass emails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk or mass email sending&lt;/strong&gt; mostly relates to marketing and sales: you need to send one and the same message to a myriad of users at the same time. It can be a template with personalized data like names, locations, etc. Newsletters, special offers, and promotions are the most common examples of bulk email services usage.&lt;/p&gt;

&lt;p&gt;The specific feature of these mass emails is the required “unsubscribe” option. Bulk emails are usually sent through SMTP servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transactional emails&lt;/strong&gt; are event-driven. Not you as a sender schedule message delivery but the user of your website or application performs some action, which triggers email sending. The user provides you with his or her email address and as a result, gets some response. It can be registration for your service (=&amp;gt; registration confirmation), contact or application form (=&amp;gt; an automated reply or an ebook), a purchase (=&amp;gt; order confirmation or an invoice). Another example is someone posting a comment on the blog – in this case, the author gets a notification.&lt;/p&gt;

&lt;p&gt;Transactional emails can be sent both through SMTP relay or email API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk or transactional&lt;/strong&gt; – it is the first high-level question you should answer when looking for the right provider. Whether you are a manager, marketer, developer, or DevOps, it’s important to think forward: is there any chance that I need additional capabilities in a month or two? What is the value I (read: my company) agree to pay for?&lt;/p&gt;

&lt;h2&gt;
  
  
  Email service features and parameters that really matter
&lt;/h2&gt;

&lt;p&gt;Delivery speed, security, availability, and integrations are essential for transactional emails as well as spam rates, analytics, templates support, or/and design options matter for mass emails. These points are quite obvious but what hidden gems might we discover when going deeper?&lt;/p&gt;

&lt;h3&gt;
  
  
  Transactional emails priorities
&lt;/h3&gt;

&lt;p&gt;The main three things we expect from transactional emails are deliverability, speed, and security. When we click “reset password”, we assume that the email with the cherished link will land in the primary section of our inbox in seconds. When we get the results of our medical tests, we need to be sure that this sensitive information will not become public. So, how is it provided?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Delivery infrastructure&lt;/strong&gt;. Start your research with the delivery options. When you choose from the market leaders, most probably you can be sure that they rank for their reliability. Anyway, for better results, pay  attention to the following factors:&lt;/li&gt;
&lt;li&gt;dedicated IP addresses for different purposes, maintaining IP reputation, and IP warming. These features have a direct impact on delivery speed and lower possibility of your messages going to spam.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/email-authentication/"&gt;email authentication&lt;/a&gt; standards to protect domain from spoofing:  &lt;a href="https://mailtrap.io/blog/spf-records-explained/"&gt;SPF&lt;/a&gt;, &lt;a href="https://mailtrap.io/blog/dkim/"&gt;DKIM&lt;/a&gt;, and &lt;a href="https://mailtrap.io/blog/dmarc-explained/"&gt;DMARC&lt;/a&gt; validation.&lt;/li&gt;
&lt;li&gt;API option. Sending emails through &lt;a href="https://mailtrap.io/blog/smtp-relay/"&gt;SMTP relay&lt;/a&gt; is a universal method matching most types of integration. When adding email functionality to your own application, a web API can be a more preferable option ensuring faster delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing capabilities&lt;/strong&gt;. You should always test your email before actually sending it. Here we are talking about the technical side, beyond the nice wording in a template and your customer needs in the center of your communication. The basic things to test are:&lt;/li&gt;
&lt;li&gt;delivery. You can’t have a 100% guarantee of an email delivered to the particular inbox but you need to verify that your integration works correctly , “sender” and “receiver” addresses and headers look right, and so on.&lt;/li&gt;
&lt;li&gt;content display (text and HTML). There are no unified images rendering standards for emails but you can test your message against possible issues in the most popular email clients and check if your markup looks as expected.&lt;/li&gt;
&lt;li&gt;spam score. Additional tests for spam score and domain blacklisting will add just extra safety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of integration&lt;/strong&gt;. It is more of your convenience but it is one of the first factors users mention about their experience with a new service. Delivery infrastructure is the “must” priority in our list but well-structured documentation with code samples and plugins availability are always a big plus.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics and reports&lt;/strong&gt;. It goes without saying that monitoring the status of your emails is important. There are lots of dedicated services but having everything in one place is just easier to use and is more reliable in most cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service uptime&lt;/strong&gt;. Technical issues always have their place to be. So don’t forget to check the status page of the service of your choice. Check the history going back at least one year: how often did the site go down? How long did it take to fix it?&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Bulk emails criteria
&lt;/h3&gt;

&lt;p&gt;For marketing campaigns, priorities are similar but new things should be added here.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Delivery infrastructure&lt;/strong&gt;. The note about reliability and security is still valid: you would prefer your emails landing in a main or at least promotional folder, not spam.&lt;/li&gt;
&lt;li&gt;Scalability. You should be able to send your campaign to 1,000,000 recipients as successfully as to 100.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;List management&lt;/strong&gt;. You should be able to upload your list of recipients quickly and easy, edit, group, and tag it. This is quite obvious. You as a sender also earn your reputation: a high percentage of bounces and unsubscribes have a negative effect. Neglecting these rules is a direct way to the spam folder. How can the email service provider help?&lt;/li&gt;
&lt;li&gt;Email verification. You should have the option to check if the email address exists without sending a message.&lt;/li&gt;
&lt;li&gt;Opt-out. To comply with GDPR and any other privacy rules, your recipients should be able to easily unsubscribe from your messages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of integration&lt;/strong&gt;. The main goal of a marketing campaign is to engage with customers, so we need more options for template creation and integration. Besides, the marketing specialist should be able to launch campaigns both with or without a developer’s or designer’s help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics and reports&lt;/strong&gt;. You need to understand your user’s behavior on a deeper level. The more data you can get, the better: open, click, read rates, unsubscribe reasons, and sharing are the basic metrics to track.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;. The points are the same as for transactional emails. The main difference is that all marketing campaigns contain links, images, buttons, and other elements, which need to be carefully verified. Preview on different devices and mail clients, test campaigns will help to make sure that your recipient will get your email looking as beautiful as you designed it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, with the understanding of what to look for in the email service providers, let’s check what each of them offers. Also, we’ve analyzed our own experience and reviewed users feedback on different websites like &lt;a href="https://www.capterra.com/"&gt;Capterra&lt;/a&gt;, &lt;a href="https://www.g2.com/"&gt;G2Crowd&lt;/a&gt;, and &lt;a href="https://www.trustradius.com/"&gt;Trust Radius&lt;/a&gt; to define the lists of pros and cons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sendgrid
&lt;/h2&gt;

&lt;p&gt;Sendgrid was born in 2009, and since then has evolved into a powerful &lt;a href="https://mailtrap.io/blog/email-marketing/"&gt;email marketing&lt;/a&gt; service. At the end of 2018, it was acquired by Twillo, the cloud communications platform.&lt;/p&gt;

&lt;p&gt;Sendgrid offers solutions for both transactional and bulk emails sending along with a toolset for an instant building of marketing campaigns. This way, you can integrate it with your website or application, either another platform like WordPress or Drupal, or use as an independent tool.&lt;/p&gt;

&lt;p&gt;The Sendgrid team emphasizes proven deliverability, confident scalability, and distinct email expertise as the specific strengths.&lt;/p&gt;

&lt;p&gt;You will find tons of content on Sendgrid website. Most probably, you will get an answer to any of your questions but it can be easy to get lost at first.&lt;/p&gt;

&lt;p&gt;Sendgrid offers the following products.&lt;/p&gt;

&lt;h3&gt;
  
  
  Email API (read: transactional emails)
&lt;/h3&gt;

&lt;p&gt;You get the following capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SMTP API and Web API (REST)&lt;/li&gt;
&lt;li&gt;Delivery and security&lt;/li&gt;
&lt;li&gt;API and IP access management&lt;/li&gt;
&lt;li&gt;both shared IP pools and a dedicated IP&lt;/li&gt;
&lt;li&gt;SPF, DKIM, and DMARC record creation&lt;/li&gt;
&lt;li&gt;email activity tracking and details-by-email API.&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;li&gt;event webhooks&lt;/li&gt;
&lt;li&gt;real-time activity.&lt;/li&gt;
&lt;li&gt;Transactional templates with HTML editing.&lt;/li&gt;
&lt;li&gt;Integrations&lt;/li&gt;
&lt;li&gt;cURL calls and libraries for Node.js, Ruby, Python, Go, PHP, Java, and C#&lt;/li&gt;
&lt;li&gt;3rd party plugins.&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;sandbox&lt;/li&gt;
&lt;li&gt;sink domain.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Email marketing (read: bulk emails)
&lt;/h3&gt;

&lt;p&gt;The most important features include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Campaign builder with design editor (HTML and WYSIWYG) and templates.&lt;/li&gt;
&lt;li&gt;Campaign management with flexible settings: scheduling, &lt;a href="https://snov.io/glossary/a-b-testing/"&gt;A/B testing&lt;/a&gt;, personalization.&lt;/li&gt;
&lt;li&gt;Real-time analytics with key metrics and event webhooks for more customized tracking.&lt;/li&gt;
&lt;li&gt;Sender authentication along with dedicated IPs and custom domain sending.&lt;/li&gt;
&lt;li&gt;Email marketing automation, which now is in its beta.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Recently, Sendgrid has added display ads for Google, Facebook, and Instagram, which are connected to email marketing campaigns. The product is called Email Ads (now it’s in beta).&lt;/p&gt;

&lt;p&gt;Here is a link to the Sendgrid status page where you can view the history of the incidents as well: &lt;a href="http://status.sendgrid.com"&gt;http://status.sendgrid.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What users like the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Comprehensive documentation.&lt;/li&gt;
&lt;li&gt;Sending speed and deliverability.&lt;/li&gt;
&lt;li&gt;Easy to set up.&lt;/li&gt;
&lt;li&gt;Seamless integrations.&lt;/li&gt;
&lt;li&gt;Separate API keys when using for multiple systems.&lt;/li&gt;
&lt;li&gt;Helpful support.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What users complain about the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Confusing marketing campaign API.&lt;/li&gt;
&lt;li&gt;Complicated or hard to navigate UI.&lt;/li&gt;
&lt;li&gt;Lack of documentation on the third-party plugins integrations.&lt;/li&gt;
&lt;li&gt;Just average level of reliability for shared IPs along with difficulties with checking their state.&lt;/li&gt;
&lt;li&gt;Poor reputation management – you won’t be notified about problems.&lt;/li&gt;
&lt;li&gt;Insufficient data tracking options. Especially, limited time for data storage (three days only) and the necessity to buy extra storage time.&lt;/li&gt;
&lt;li&gt;Lack of features for transactional emails like weblinks or easy native unsubscribe.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We should add that Sendgrid is one of the most popular services, in particular due to its complex solutions. This way, it has gathered a great number of reviews and as a result – complains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mandrill
&lt;/h2&gt;

&lt;p&gt;Mandrill is a transactional email API available for &lt;a href="https://www.growthcollective.com/blog/klaviyo-vs-mailchimp-the-ultimate-comparison"&gt;Mailchimp users&lt;/a&gt;. It was created as an independent service but in 2016 it was acquired by Mailchimp and turned into its paid add-on. This transition has caused waves of outrage from its users as it eliminated absolutely free billing plan. But now you can get all the advantages of the integrated &lt;a href="https://targetbay.com/klaviyo-alternatives/"&gt;email marketing platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In terms of information, such a division for transactional and marketing email campaigns makes it easier to clarify how the service works.&lt;/p&gt;

&lt;p&gt;Mandrill offers the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/smtp-or-web-api/"&gt;SMTP API&lt;/a&gt; and Web API (RESTful)&lt;/li&gt;
&lt;li&gt;Delivery and security&lt;/li&gt;
&lt;li&gt;distributed infrastructure to provide seamless emails delivery&lt;/li&gt;
&lt;li&gt;IP management: dedicated IP addresses, warm up, and pooling along with feedback loops&lt;/li&gt;
&lt;li&gt;SPF and DKIM authentication
multiple domains.&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;li&gt;custom tracking and automated Google Analytics parameters&lt;/li&gt;
&lt;li&gt;webhooks for integration with your own database&lt;/li&gt;
&lt;li&gt;integration with your CRM with custom metadata.&lt;/li&gt;
&lt;li&gt;Templates with HTML and automatic CSS inlining.&lt;/li&gt;
&lt;li&gt;Powerful integrations&lt;/li&gt;
&lt;li&gt;official APIs for curl, JSON, Python, PHP, Ruby, Node.js, and Dart&lt;/li&gt;
&lt;li&gt;third-party plugins and modules for WordPress, Joomla, Magento, Drupal, and SPIP&lt;/li&gt;
&lt;li&gt;inbound email routing.&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;test API key&lt;/li&gt;
&lt;li&gt;testing stats.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mandrill doesn’t show uptime statistics but has a dedicated Twitter account, which they call “Status”: &lt;a href="https://twitter.com/mandrillapp/"&gt;https://twitter.com/mandrillapp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As soon as you already have Mailchimp account for using Mandrill, you have the powerful email marketing platform at your disposal. See the full list of features &lt;a href="https://mailchimp.com/features/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What users like the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Reliability and high deliverability.&lt;/li&gt;
&lt;li&gt;Easy to implement and use.&lt;/li&gt;
&lt;li&gt;Flexible and comprehensive reporting.&lt;/li&gt;
&lt;li&gt;Subaccounts management.&lt;/li&gt;
&lt;li&gt;Transparent and clear IP and delivery information.&lt;/li&gt;
&lt;li&gt;Thorough documentation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What users complain about the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Outdated interface.&lt;/li&gt;
&lt;li&gt;Mailchimp dependence.&lt;/li&gt;
&lt;li&gt;No free plan.&lt;/li&gt;
&lt;li&gt;Difficult domain validation.&lt;/li&gt;
&lt;li&gt;Poor support.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From our side we faced the blocking challenge when using Mandrill for transactional emails like signup confirmation or forgotten password. We haven’t received any warning or something else, so the reputation management complaints are valid for Mandrill as well. However, we had a positive experience with their support.&lt;/p&gt;

&lt;p&gt;We also have detailed review that compares &lt;strong&gt;&lt;a href="https://mailtrap.io/mailtrap-mandrill-alternative/"&gt;Mailtrap and Mandrill&lt;/a&gt;&lt;/strong&gt;, where you can see all the features these platform have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mailgun
&lt;/h2&gt;

&lt;p&gt;Mailgun is the email service for developers, it is what their key message says. You still can use it for both transactional and mass emails but it doesn’t offer independent functionality for marketers, like templates and media library.&lt;/p&gt;

&lt;p&gt;Mailgun website will also offer you lots of information and enough space to get confused. Here is a list of main options. You won’t find the obvious splitting for different types of emails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transactional emails
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;SMTP relay and Web API (RESTful).&lt;/li&gt;
&lt;li&gt;Delivery and security&lt;/li&gt;
&lt;li&gt;SPF, DKIM, and DMARC customization&lt;/li&gt;
&lt;li&gt;dedicated IPs&lt;/li&gt;
&lt;li&gt;isolated sending domains&lt;/li&gt;
&lt;li&gt;managed support and custom programs.&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;li&gt;various metrics, A/B testing, and tag comparison&lt;/li&gt;
&lt;li&gt;webhooks and events&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://betterstack.com/community/comparisons/log-monitoring-tools/"&gt;detailed log monitoring&lt;/a&gt; available up to 30 days.&lt;/li&gt;
&lt;li&gt;Templates with HTML and automatic CSS inlining.&lt;/li&gt;
&lt;li&gt;Powerful integrations&lt;/li&gt;
&lt;li&gt;libraries for Python, Ruby, Java, Kotlin, Go, C#, PHP, Node.js, Luvit, cURL&lt;/li&gt;
&lt;li&gt;inbound email routing&lt;/li&gt;
&lt;li&gt;Mailgun has a number of integrations with 3rd party platforms and also recommends services which can be used to supplement its functionality.&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;test mode&lt;/li&gt;
&lt;li&gt;email validation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Special features for bulk emails
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Scalability. It can handle up to 10,000,000 emails.&lt;/li&gt;
&lt;li&gt;Email list management with email validation and segmentation.&lt;/li&gt;
&lt;li&gt;Unsubscribe handling.&lt;/li&gt;
&lt;li&gt;Personalization with Recipient Variables.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is a link to the Mailgun status page: &lt;a href="https://status.mailgun.com/"&gt;https://status.mailgun.com/&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What users like the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;High deliverability&lt;/li&gt;
&lt;li&gt;Great free tier&lt;/li&gt;
&lt;li&gt;Easy integration&lt;/li&gt;
&lt;li&gt;Effortless domain and DNS verification&lt;/li&gt;
&lt;li&gt;Live chat support and great support overall, even for free users&lt;/li&gt;
&lt;li&gt;Detailed error reporting&lt;/li&gt;
&lt;li&gt;Email validation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What users complain about the most
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Outdated UI&lt;/li&gt;
&lt;li&gt;Lack of testing options especially emails preview&lt;/li&gt;
&lt;li&gt;Lack of IP statistics and risk when using shared IPs&lt;/li&gt;
&lt;li&gt;Occasional delays&lt;/li&gt;
&lt;li&gt;The complexity of the log search interface.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Sendgrid vs Mandrill vs Mailgun: basic features comparison
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w9uWlY0R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ljrcewtcq00e58h8ac10.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w9uWlY0R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ljrcewtcq00e58h8ac10.jpg" alt="Image description" width="561" height="952"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing comparison
&lt;/h2&gt;

&lt;p&gt;Sendgrid, Mandrill, and Mailgun are often compared regardless of their pretty different purpose and functionality. Let’s go to the pricing details to get the full picture. Small disclaimer here: each of these services has its own approach to pricing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sendgrid.com/pricing/"&gt;Sendgrid pricing&lt;/a&gt; is based not only on the sending volumes but also on features limits. Full features comparison is available on the pricing page: it is well-structured and easy to understand.&lt;/p&gt;

&lt;p&gt;The main criteria for &lt;a href="https://www.mailgun.com/pricing"&gt;Mailgun pricing&lt;/a&gt; are the number of emails you send and the number of email validations. All features are available for all customers but more advanced plans provide some additional functionality as well. The Mailgun pricing page is minimalistic, &lt;a href="https://www.mailgun.com/blog/new-mailgun-pricing-no-more-minimums-features-for-all"&gt;so here is their blog post&lt;/a&gt; explaining how it works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mandrill.com/pricing/"&gt;Mandrill costs&lt;/a&gt; depend solely on the email sending volumes. They offer you blocks of 25,000 emails. Don’t forget that a Mailchimp paid account is required as well.&lt;/p&gt;

&lt;p&gt;Also, remember that for marketing campaigns in Sendgrid and Mailchimp, the list of subscribers matter. You will be charged not only for the number of emails you send but also for the number of subscribers you have.&lt;/p&gt;

&lt;p&gt;Taking these attributes into account, let’s compare the costs of some basic and most demanded features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free emails sending, comparison
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yOtVLvOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l5ufa20j2advlloq2saj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yOtVLvOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l5ufa20j2advlloq2saj.jpg" alt="Image description" width="692" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;75,000 emails sending, comparison&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VMSZaAnj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iobv5x9z36c4e7dl2o7d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VMSZaAnj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iobv5x9z36c4e7dl2o7d.jpg" alt="Image description" width="693" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;250,000 emails sending, comparison&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DLPeIFAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbp1nl4kxzk3xs3k78dc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DLPeIFAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbp1nl4kxzk3xs3k78dc.jpg" alt="Image description" width="630" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1,000,000 emails sending, comparison&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6ViPcbQD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/au4lg1c9ybts9xnmbbr5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6ViPcbQD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/au4lg1c9ybts9xnmbbr5.jpg" alt="Image description" width="626" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So, which email service is right for you?
&lt;/h2&gt;

&lt;p&gt;We have reviewed the two types of emails – bulk and transactional – along with the features essential for each of the tasks.&lt;/p&gt;

&lt;p&gt;If you mostly deal with email sending through your own website or application and you don’t need the email marketing templates, then it might be reasonable to start with Mailgun. It partners with various platforms to make integrations easier. If you work with One Signal, Easy Sendy, Customer.io, Rackspace, Heroku, or Manifold, it can supplement their functionality well.&lt;/p&gt;

&lt;p&gt;Mandrill is now indivisibly connected to Mailchimp, so if you already use this platform, you may find it rational to add their service to your list of tools.&lt;/p&gt;

&lt;p&gt;Sendgrid offers flexible pricing and great quality as well. It was the first of these email services and is constantly improving and expanding its functionality. Check which options are pivotal for your current needs and make sure that they are included in the subscription plan of your choice.&lt;/p&gt;

&lt;p&gt;Still, have doubts? It might be a good idea to check out customer stories. They can help you understand which type of business problems each of the providers copes with best.&lt;/p&gt;

&lt;p&gt;Anyway, each of the services is praised for its ease of setup, so you should be able to switch between them effortlessly.&lt;/p&gt;

&lt;p&gt;Thank you for reading this article! Find out more bulk email sending services and their features in &lt;a href="https://mailtrap.io/blog/sendgrid-vs-mandrill-vs-mailgun/#Mandrill"&gt;Mailtrap blog&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
