If your WordPress contact forms aren't sending email, the problem is almost always how WordPress tries to deliver mail. By default, WordPress uses PHP's mail() function, which frequently gets blocked by spam filters or rejected by recipient mail servers. The fix is to configure WordPress to send email through SMTP authentication instead.
Install the WP Mail SMTP plugin (or similar SMTP plugin), configure it to use your Ultra Web Hosting email account as the sender, and set the mailer to "Other SMTP" with your server's mail settings. This forces WordPress to authenticate before sending, which dramatically improves deliverability.
01. Why WordPress Email Fails
WordPress uses the wp_mail() function to send all email, including contact form submissions, password resets, WooCommerce order confirmations, and plugin notifications. By default, wp_mail() calls PHP's built-in mail() function, which hands the message to the server's local mail transfer agent.
The problem is that emails sent this way often lack proper authentication. The "From" address may not match the server's hostname, there are no DKIM signatures, and the SPF record may not align. Receiving mail servers (Gmail, Outlook, Yahoo) see these messages as suspicious and either send them to spam or reject them outright.
Common symptoms include:
Form submissions disappear - The form shows "sent successfully" but no email arrives. The form plugin thinks it worked because wp_mail() returned true, but the message was rejected downstream.
Emails land in spam - Messages arrive but go straight to the recipient's junk folder.
Intermittent delivery - Some emails arrive, others don't. This usually means the receiving server is sometimes accepting and sometimes rejecting based on reputation scoring.
02. Setting Up an SMTP Plugin
The most reliable way to fix WordPress email is to install an SMTP plugin that overrides the default wp_mail() behavior. The most popular option is WP Mail SMTP by WPForms (free version works fine).
- Install the plugin - In WordPress admin, go to Plugins > Add New, search for "WP Mail SMTP," install and activate it
- Open settings - Go to WP Mail SMTP > Settings in the left sidebar
- Set the From Email - Use a real email address on your domain (e.g.,
info@yourdomain.com). This must be an email account that exists in cPanel - Set the From Name - Your site name or business name
- Check "Force From Email" - This ensures all WordPress emails use this address, regardless of what individual plugins set
- Select "Other SMTP" as the mailer
- Enter the SMTP settings - See the next section for the correct values
03. SMTP Settings for Ultra Web Hosting
SMTP Host: mail.yourdomain.com (replace with your actual domain)
Encryption: SSL
SMTP Port: 465
Authentication: On
SMTP Username: Your full email address (e.g., info@yourdomain.com)
SMTP Password: The password for that email account
You can also use localhost as the SMTP Host with port 25 and no encryption. This works because your site and mail server are on the same machine, but using SSL on port 465 is preferred because it authenticates properly and produces better email headers for deliverability.
If your domain uses Google Workspace or another external email provider, you'll need to use that provider's SMTP settings instead. See our Google Workspace setup guide for those details.
04. Testing Email Delivery
After configuring SMTP, use the plugin's built-in test feature:
- Go to WP Mail SMTP > Tools > Email Test
- Enter a recipient email address - Use an address at a different provider (Gmail, Outlook) to test real-world delivery
- Click "Send Email"
- Check the result - The plugin will show a success or failure message with details
If the test succeeds but your contact forms still don't send, the issue is in the form plugin configuration, not in WordPress email delivery. See the next section.
05. Form Plugin Settings to Check
Contact Form 7: Make sure the "From" field in your form's Mail tab uses the same email address you configured in WP Mail SMTP. If they don't match, some SMTP setups will reject the message. Use the [your-email] tag in the "Reply-To" field instead of the "From" field.
WPForms: Under Settings > Notifications for your form, set the "From Email" to your authenticated SMTP address. Put the visitor's submitted email in the "Reply-To" field.
Gravity Forms: In form Notifications, set the "From Email" to your SMTP address. Use {admin_email} or your authenticated address, not the submitter's address.
Do not set the "From" address to the visitor's email address (the person filling out the form). Your server is not authorized to send email as someone else's address. This will cause delivery failures. Always send "from" your own domain and put the visitor's address in the "Reply-To" header instead.
06. Troubleshooting
SMTP Test Fails with Authentication Error
Double-check the email password. Log into webmail at https://yourdomain.com/webmail with the same credentials to verify they work. If the email account was recently created, wait a few minutes for it to fully provision.
SMTP Test Fails with Connection Timeout
Try switching from SSL on port 465 to TLS on port 587, or try localhost on port 25 with no encryption. If all ports fail, your server's firewall may be blocking outbound SMTP. Contact support to check.
Emails Send But Go to Spam
Make sure your domain has proper SPF, DKIM, and DMARC records configured. See our email authentication guide for setup instructions. Also verify the "From" address matches your domain, not a generic or mismatched address.
WooCommerce Emails Not Sending
WooCommerce uses the same wp_mail() function, so the SMTP plugin fix applies. If WooCommerce emails specifically aren't sending, check WooCommerce > Settings > Emails to make sure individual email types (new order, processing, completed) are enabled.
Still Not Receiving Email?
If you've configured SMTP and emails still aren't arriving, our support team can check the server mail logs to trace where the message is being lost.
Open a Support TicketQuick Recap: Fixing WordPress Form Email
- Install WP Mail SMTP - Or any SMTP plugin to replace the default PHP mail function
- Use your real email - Set the "From" address to an email account that exists on your domain
- Configure SMTP - Use
mail.yourdomain.com, SSL, port 465, with authentication - Fix form "From" addresses - Send from your domain, put visitor email in Reply-To
- Set up email authentication - SPF, DKIM, and DMARC records improve deliverability
Last updated March 2026 · Browse all WordPress articles
