How to configure a Contact Form with us

There are many benefits of using a contact form versus posting an actual email address on your website:

  • With a contact form, you can request specific information from your clients (e.g. phone number or company name).
  • Customers are more likely to contact you if they can easily find and submit the contact form without having to open their own email program.
  • The most important reason for using a contact form is to reduce incoming spam. When you display your email address on your website, there is a good chance that it might end up in the hands of a spammer. For extra security, you can also add reCAPTCHA to your form.

 

Contact forms can use PHP mail() function or SMTP authentication to send emails. With the PHP mail() function, you are sending emails directly from your web server without any form of authentication. Unlike the PHP mail(), SMTP authentication let you use the mail server of your choice by specifying the username and password of the email account. If the details are valid, the email is accepted and delivered to the designated recipient.
 
 

PHP mail() function

SMTP authentication

Using Gmail in a contact form

Configuring SMTP in WordPress



PHP mail() function

 
If your script uses PHP mail() function, you have to configure the From field of the form with an email account based on the domain hosted on our server. There is no need to create an email account. However, you can also use an email account that was created in cPanel, is hosted on our server and has Local Mail Exchanger.  If you want to use a third-party email address in the From field (like Gmail, Private Email, etc) or avoid via cPanel user@server part, SMTP authentication is required.

If your domain uses a third-party email service, but you still want to configure PHP mail() you can create a subdomain and an email account for the subdomain and set it with local email routing.
 
To set email routing to Local, go to cPanel >> the Email section >> the Email Routing menu:




Select your subdomain (or domain) from the drop-down list, select Local Mail Exchanger, and click Change:



An example of simple PHP mail() code:
 

<?
$mail_to_send_to = "name@anydomain.tld";
$from_email = "from@yourdomain.tld";
$sendflag = $_REQUEST['sendflag'];    
$name=$_REQUEST['name'];
if ( $sendflag == "send" )
        {
                $subject= "Message subject";
                $email = $_REQUEST['email'] ;
                $message= "\r\n" . "Name: $name" . "\r\n"; //get recipient name in contact form
                $message = $message.$_REQUEST['message'] . "\r\n" ;//add message from the contact form to existing message(name of the client)
                $headers = "From: $from_email" . "\r\n" . "Reply-To: $email"  ;
                $a = mail( $mail_to_send_to, $subject, $message, $headers );
                if ($a)
                {
                     print("Message was sent, you can send another one");
                } else {
                     print("Message wasn't sent, please check that you have changed emails in the bottom");
                }
        }
        ?>

 
In the code above:
  • $mail_to_send_to = "name@anydomain.tld" identifies the email address the message will be sent to. It can be any email address, including third-party services like Gmail, Yahoo, etc.
  • $from_email = "from@yourdomain.tld" identifies the email address the message will be sent from. It should be a local email address (created in cPanel)
  • Reply-To: $email" is the email address of the site visitor, assuming they specify one in the "Your email" field of the contact form. This email is then assigned as the "Reply To" address.
 
To make it work, you also need to create an .html file in the website's folder and paste the following:
 
<form method="POST" action="file_with_php_fucntion.php" id="contact-form">
<h2>Contact us</h2>
<p><label>First Name:</label> <input name="name" type="text" /></p>
<p><label>Email Address:</label> <input style="cursor: pointer;" name="email" type="text" /></p>
<p><label>Message:</label> <textarea name="message"></textarea> </p>
<p><input name="sendflag" type="submit" value="send" /></p>
</form>
 
Remember to replace file_with_php_fucntion.php with the name of the file with PHP mail() code.

SMTP authentication

 
Simple Mail Transfer Protocol is a standard protocol used for sending emails. SMTP uses authentication (a login with a username and password) which increases email deliverability.

To use SMTP authentication you need:
  • username (your full email address in most cases);
  • password (password from that email account);
  • hostname (server from which the emails are sent);
  • port (465 with SSL, 587/25 with TLS);
  • type of encrypted connection: SSL or TLS.

 

 
In order to be able to use SMTP protocol on the shared hosting servers, you will need to install PHPmailer or a similar framework for your website. Feel free to use the steps below to configure PHPmailer; if you would like to use another framework on Shared hosting, you can apply it on your side as well.
 
 
PHPmailer installation

There are two installation methods available on our servers - installation using Composer and manual installation.


If your website is using Composer, you can simply add it to your requirements in the Composer.json file:

phpmailer/phpmailer

Alternatively, you can install it via ssh with the following command:

composer require phpmailer/phpmailer

PLEASE NOTE: Make sure to run the above command from the root directory of your website.

 
Manual installation
 
 
In case you are not using Composer with your website, you can download the the PHPmailer and follow these steps:
 
1. Click on Clone or Download >> Download ZIP:
 
 
2. Upload the PHPMailer-master.zip archive to your website’s folder and extract it:
 
 
3. Include the PHPmailer files in your script as shown in the example below.
 
 
SMTP code example

NOTE: replace /home/nctests/public_html/PHPMailer-master/src with the actual path to the PHPMailer-master/src folder if you are doing manual PHPmailer installation:

If you are using composer - load Composer's autoloader:



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

require 'vendor/autoload.php';

If you are not using composer - load the PHPmailer class files directly:
 


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

require '/home/nctests/public_html/PHPMailer-master/src/Exception.php';
require '/home/nctests/public_html/PHPMailer-master/src/PHPMailer.php';
require '/home/nctests/public_html/PHPMailer-master/src/SMTP.php';
 
 
The SMTP mail code looks like this:
 
function sendmail($to,$nameto,$subject,$message,$altmess)  {
  $from  = "youremail@domain.tld"; 
  $namefrom = "Your Name";
  $mail = new PHPMailer();
  $mail->SMTPDebug = 0;
  $mail->CharSet = 'UTF-8';
  $mail->isSMTP();
  $mail->SMTPAuth   = true;
  $mail->Host   = "smtp.host.tld";
  $mail->Port       = 465;
  $mail->Username   = $from;
  $mail->Password   = "pass123";
  $mail->SMTPSecure = "ssl";
  $mail->setFrom($from,$namefrom);
  $mail->addCC($from,$namefrom);
  $mail->Subject  = $subject;
  $mail->isHTML();
  $mail->Body = $message;
  $mail->AltBody  = $altmess;
  $mail->addAddress($to, $nameto);
  return $mail->send();
}

 
In the code above:
  • $namefrom = Your Name is the name your recipient will see next to your email in the inbox
  • $mail->Username is your full email address
  • $mail->Password is the password to that email account
  • $mail->SMTPAuth - enabling SMTP authentication
  • $mail->Host is the hostname of the server that sends the emails
  • $mail->Port is the SMTP port
  • $mail->SMTPSecure is the type of the encryption

Using Gmail in a contact form


To be able to use a Gmail email address in your contact form, you need to make some changes in your Gmail account settings. This only applies if you want to send From the Gmail account. Skip this part if you use Gmail only in the To field.

Google may block sign-in attempts from IPs which are located far from the usual geographical location of the mailbox owner. In such case, the “Suspicious sign in is prevented” email will appear in the Gmail inbox.

There are three steps:
 
1. Sign into your Gmail account and find the Signing in to Google section. Turn 2-Step Verification off, if you are using it (mail script will not be able to log in to the account when 2FA is on):



2. Scroll down to the Less secure app access section and click on Turn on access:



On the next page, turn the less secure app ON:
 
 
3. Next, go to https://accounts.google.com/DisplayUnlockCaptcha and click Continue:



Now you can configure and test your contact form. Use the following SMTP settings:
  • Email sending method: SMTP;
  • SMTP authentication: enabled;
  • SMTP username: yourmailbox@gmail.com;
  • SMTP password: password for this email address;
  • SMTP hostname: smtp.gmail.com;
  • SMTP port: 465 with SSL on.



SMTP in WordPress


By default, WordPress uses PHP mail() function to send emails. If you want to send WordPress mail from a third-party mail server or use SMTP authentication with your cPanel email account, you need to install an SMTP plugin. There are several SMTP plugins for WordPress. We will use the WP Mail SMTP plugin in this example.
 
1. Log into your WordPress admin dashboard and go to Plugins >> Add New >> search for the WP Mail SMTP plugin and click Install Now:



2. Once installed, click Activate. Then, go to Settings >> WP Mail SMTP to configure the plugin settings:
 


3. You can find an example of the SMTP setup below:
 


  • From Email - the email address you want to use to send all WordPress emails from
  • From Name - the name that the emails will be sent from
  • Mailer - choose Other
  • SMTP Host - hostname of the outgoing mail server (smtp.gmail.com for Gmail; mail.privateemail.com for Private Email; smtp.yahoo.com for Yahoo mail; server your account is hosted on for cPanel email, etc.)
  • Encryption - TLS or SSL
  • SMTP Port - 465 (SSL) or 587 (TLS)
  • Auto TLS - if your server supports TLS encryption, you may enable this option
  • Authentication - On
  • SMTP Username - full email address
  • SMTP Password - password for that email address
 
Enter all the details and click Save Settings.
 
To test the configuration, go to the Email Test tab, enter your email and click the Send Email button. Check your email for the test email:



                                                           For more information on how to set up  WordPress Contact Form 7, click here


That's it!
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

How to set up cPanel webmail to go directly to Horde or Roundcube

How to set up cPanel webmail to go directly to Horde or Roundcube

How to change the time zone in cPanel Webmail

By default, webmail applications use the host server's time zone. If you are in a different time...

How to change MX records and Email Routing in cPanel

MX records for Basic ThemeMX records for Retro ThemeEmail Routing for Basic ThemeEmail Routing...

How to Create An Email Account in cPanel

In order to create a new email account in cPanel, follow the instructions below: For cPanel...