Email form

0 replies · opened Jun 2, 2024

GgafJun 2, 2024

I tried both options from the documentation and I am getting this error:

Email could not be sent due to some Unexpected Error. Please Try Again later.

Reason:
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/TroubleshootingSMTP server error: Failed to connect to server SMTP code: 111 Additional SMTP info: Connection refused

this is my form.php

<?php

/*-------------------------------------------------

Form Processor Plugin
by SemiColonWeb

---------------------------------------------------*/

/-------------------------------------------------
PHPMailer Initialization
---------------------------------------------------
/

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

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

/-------------------------------------------------
Receiver's Email
---------------------------------------------------
/

$toemails = array();

$toemails[] = array(
'email' => 'placeholderemail', // Your Email Address
'name' => 'placeholdername' // Your Name
);

/-------------------------------------------------
Sender's Email
---------------------------------------------------
/

$fromemail = array(
'email' => 'no-reply@website.com', // Company's Email Address (preferably currently used Domain Name)
'name' => 'Company Name' // Company Name
);

/-------------------------------------------------
reCaptcha
---------------------------------------------------
/

// Add this only if you use reCaptcha with your Contact Forms
$recaptcha_secret = ''; // Your reCaptcha Secret

/-------------------------------------------------
hCaptcha
---------------------------------------------------
/

// Add this only if you use hCaptcha with your Contact Forms
$hcaptcha_secret = ''; // Your hCaptcha Secret

/-------------------------------------------------
PHPMailer Initialization
---------------------------------------------------
/

$mail = new PHPMailer();

/* Add your SMTP Codes after this Line */
$mail->IsSMTP();
$mail->Host = "mail.oncprofessional.com";
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Port = 26;
$mail->Username = "placeholderemail";
$mail->Password = "placeholderpassword";

// End of SMTP

/-------------------------------------------------
Form Messages
---------------------------------------------------
/

$message = array(
'success' => 'We have successfully received your Message and will get Back to you as soon as possible.',
'error' => 'Email could not be sent due to some Unexpected Error. Please Try Again later.',
'error_bot' => 'Bot Detected! Form could not be processed! Please Try Again!',
'error_unexpected' => 'An unexpected error occured. Please Try Again later.',
'captcha_invalid' => 'Captcha not Validated! Please Try Again!',
'captcha_error' => 'Captcha not Submitted! Please Try Again.'
);

/-------------------------------------------------
SPAM Protection Settings
---------------------------------------------------
/

$spam_keywords = array(
'viagra',
'cialis',
'levitra'
);

$allowed_urls = 1;

/-------------------------------------------------
Form Processor
---------------------------------------------------
/

if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

$prefix		= !empty( $_POST['prefix'] ) ? $_POST['prefix'] : '';
$submits	= $_POST;
$botpassed	= false;

$message_form					= !empty( $submits['message'] ) ? $submits['message'] : array();
$message['success']				= !empty( $message_form['success'] ) ? $message_form['success'] : $message['success'];
$message['error']				= !empty( $message_form['error'] ) ? $message_form['error'] : $message['error'];
$message['error_bot']			= !empty( $message_form['error_bot'] ) ? $message_form['error_bot'] : $message['error_bot'];
$message['error_unexpected']	= !empty( $message_form['error_unexpected'] ) ? $message_form['error_unexpected'] : $message['error_unexpected'];
$message['captcha_invalid']	= !empty( $message_form['captcha_invalid'] ) ? $message_form['captcha_invalid'] : $message['captcha_invalid'];
$message['captcha_error']		= !empty( $message_form['captcha_error'] ) ? $message_form['captcha_error'] : $message['captcha_error'];

/*-------------------------------------------------
	Bot Protection
---------------------------------------------------*/

if( isset( $submits[ $prefix . 'botcheck' ] ) ) {
	$botpassed = true;
}

if( !empty( $submits[ $prefix . 'botcheck' ] ) ) {
	$botpassed = false;
}

if( $botpassed == false ) {
	echo '{ "alert": "error", "message": "' . $message['error_bot'] . '" }';
	exit;
}

/*-------------------------------------------------
	SPAM Protection
---------------------------------------------------*/

function spam_keyword_check( $submitted, $spamwords ) {
	if( is_array( $submitted ) ) {
		return false;
	}
	if( !is_array( $spamwords ) ) $spamwords = array( $spamwords );
	foreach( $spamwords as $spamstring ) {
		if( ( $position = stripos( $submitted, $spamstring ) ) !== false ) return $position;
	}
	return false;
}

function spam_url_check( $submitted ) {
	if( is_array( $submitted ) ) {
		return false;
	}

	$pattern = "/(http|https)\:\/\/(www\.)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

	if( preg_match_all( $pattern, $submitted, $urls ) ) {
		return count($urls);
	}

	return false;
}

foreach( $submits as $spam_submit ) {
	if( spam_keyword_check( $spam_submit, $spam_keywords ) || spam_url_check( $spam_submit ) &gt; $allowed_urls ) {
		// A successful message is displayed to the submitter that makes him think that the Form has been sent so that he cannot modify the keywords to prevent SPAM
		echo '{ "alert": "success", "message": "' . $message['success'] . '" }';
		exit;
	}
}

/*-------------------------------------------------
	reCaptcha
---------------------------------------------------*/

if( isset( $submits['g-recaptcha-response'] ) && !isset( $submits['h-captcha-response'] ) ) {

	$recaptcha_data = array(
		'secret' =&gt; $recaptcha_secret,
		'response' =&gt; $submits['g-recaptcha-response']
	);

	$recap_verify = curl_init();
	curl_setopt( $recap_verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify" );
	curl_setopt( $recap_verify, CURLOPT_POST, true );
	curl_setopt( $recap_verify, CURLOPT_POSTFIELDS, http_build_query( $recaptcha_data ) );
	curl_setopt( $recap_verify, CURLOPT_SSL_VERIFYPEER, false );
	curl_setopt( $recap_verify, CURLOPT_RETURNTRANSFER, true );
	$recap_response = curl_exec( $recap_verify );

	$g_response = json_decode( $recap_response );

	if ( $g_response-&gt;success !== true ) {
		echo '{ "alert": "error", "message": "' . $message['captcha_invalid'] . '" }';
		exit;
	}
}

/*-------------------------------------------------
	hCaptcha
---------------------------------------------------*/

if( isset( $submits['h-captcha-response'] ) ) {

	$hcaptcha_data = array(
		'secret' =&gt; $hcaptcha_secret,
		'response' =&gt; $submits['h-captcha-response']
	);

	$hcap_verify = curl_init();
	curl_setopt( $hcap_verify, CURLOPT_URL, "https://hcaptcha.com/siteverify" );
	curl_setopt( $hcap_verify, CURLOPT_POST, true );
	curl_setopt( $hcap_verify, CURLOPT_POSTFIELDS, http_build_query( $hcaptcha_data ) );
	curl_setopt( $hcap_verify, CURLOPT_SSL_VERIFYPEER, false );
	curl_setopt( $hcap_verify, CURLOPT_RETURNTRANSFER, true );
	$hcap_response = curl_exec( $hcap_verify );

	$h_response = json_decode( $hcap_response );

	if ( $h_response-&gt;success !== true ) {
		echo '{ "alert": "error", "message": "' . $message['captcha_invalid'] . '" }';
		exit;
	}
}

$template	= !empty( $submits['template'] ) ? $submits['template'] : 'html';
$html_title	= !empty( $submits['html_title'] ) ? $submits['html_title'] : 'Form Response';
$forcerecap	= ( !empty( $submits['force_recaptcha'] ) && $submits['force_recaptcha'] != 'false' ) ? true : false;
$replyto	= !empty( $submits['replyto'] ) ? explode( ',', $submits['replyto'] ) : false;

if( $forcerecap ) {
	if( !isset( $submits['g-recaptcha-response'] ) ) {
		echo '{ "alert": "error", "message": "' . $message['captcha_error'] . '" }';
		exit;
	}
}

/*-------------------------------------------------
	Auto-Responders
---------------------------------------------------*/

$autores	= ( !empty( $submits['autoresponder'] ) && $submits['autoresponder'] != 'false' ) ? true : false;
$ar_subject	= !empty( $submits['ar_subject'] ) ? $submits['ar_subject'] : 'Thanks for your Email';
$ar_title	= !empty( $submits['ar_title'] ) ? $submits['ar_title'] : 'Its so good to hear from You!';
$ar_message	= !empty( $submits['ar_message'] ) ? $submits['ar_message'] : 'Autoresponder Message';

preg_match_all('#\{(.*?)\}#', $ar_message, $ar_matches);
if( !empty( $ar_matches[1] ) ) {
	foreach( $ar_matches[1] as $ar_key =&gt; $ar_value ) {
		$ar_message = str_replace( '{' . $ar_value . '}' , ( is_array($submits[ $ar_value ]) ? implode( ', ', $submits[ $ar_value ] ) : $submits[ $ar_value ] ), $ar_message );
	}
}

$ar_footer	= !empty( $submits['ar_footer'] ) ? $submits['ar_footer'] : 'Copyrights &copy; ' . date('Y') . ' **SemiColonWeb**. All Rights Reserved.';

$mail-&gt;Subject = !empty( $submits['subject'] ) ? $submits['subject'] : 'Form Response from your Website';
$mail-&gt;SetFrom( $fromemail['email'] , $fromemail['name'] );

if( !empty( $replyto ) ) {
	if( count( $replyto ) &gt; 1 ) {
		$replyto_e = $submits[ $replyto[0] ];
		$replyto_n = $submits[ $replyto[1] ];
		$mail-&gt;AddReplyTo( $replyto_e , $replyto_n );
	} elseif( count( $replyto ) == 1 ) {
		$replyto_e = $submits[ $replyto[0] ];
		$mail-&gt;AddReplyTo( $replyto_e );
	}
}

foreach( $toemails as $toemail ) {
	$mail-&gt;AddAddress( $toemail['email'] , $toemail['name'] );
}

/*-------------------------------------------------
	All Processing for Fields starting with
	Underscore must be done before this line of code
---------------------------------------------------*/

$underscore = array();

foreach( $submits as $name =&gt; $value ) {
	if( strpos($name, '_') === 0 ) {
		$underscore[] = $name;
	}
}

$unsets = array( 'prefix', 'subject', 'replyto', 'template', 'html_title', 'message', 'autoresponder', 'ar_subject', 'ar_title', 'ar_message', 'ar_footer', $prefix . 'botcheck', 'g-recaptcha-response', 'h-captcha-response', 'force_recaptcha', $prefix . 'submit' );

$unsets = $unsets + $underscore;

foreach( $unsets as $unset ) {
	unset( $submits[ $unset ] );
}

$fields = array();

foreach( $submits as $name =&gt; $value ) {
	if( empty( $value ) ) {
		continue;
	}

	$name = str_replace( $prefix , '', $name );
	$name = function_exists('mb_convert_case') ? mb_convert_case( $name, MB_CASE_TITLE, "UTF-8" ) : ucwords($name);

	if( is_array( $value ) ) {
		$value = implode( ', ', $value );
	}

	$fields[$name] = nl2br( filter_var( $value, FILTER_SANITIZE_SPECIAL_CHARS ) );
}

$files = $_FILES;

foreach( $files as $file =&gt; $filevalue ) {
	if( is_array( $filevalue['name'] ) ) {
		$filecount = count( $filevalue['name'] );

		for( $f = 0; $f &lt; $filecount; $f++ ) {
			if ( isset( $_FILES[ $file ] ) && $_FILES[ $file ]['error'][ $f ] == UPLOAD_ERR_OK ) {
				$mail-&gt;IsHTML(true);
				$mail-&gt;AddAttachment( $_FILES[ $file ]['tmp_name'][ $f ], $_FILES[ $file ]['name'][ $f ] );
			}
		}
	} else {
		if ( isset( $_FILES[ $file ] ) && $_FILES[ $file ]['error'] == UPLOAD_ERR_OK ) {
			$mail-&gt;IsHTML(true);
			$mail-&gt;AddAttachment( $_FILES[ $file ]['tmp_name'], $_FILES[ $file ]['name'] );
		}
	}
}

$response = array();

foreach( $fields as $fieldname =&gt; $fieldvalue ) {
	if( $template == 'text' ) {
		$response[] = $fieldname . ': ' . $fieldvalue;
	} else {
		$fieldname = '&lt;tr&gt;
							&lt;td style="font-size: 16px; line-height: 24px; font-weight: bold; padding: 0 0 5px 0;" align="left"&gt;' . $fieldname . '&lt;/td&gt;
						&lt;/tr&gt;';
		$fieldvalue = '&lt;tr&gt;
							&lt;td style="font-size: 16px; line-height: 24px; color: #777777; padding: 0 15px 30px 0;" align="left"&gt;' . $fieldvalue . '&lt;/td&gt;
						&lt;/tr&gt;';
		$response[] = $fieldname . $fieldvalue;
	}
}

$referrer = $_SERVER['HTTP_REFERER'] ? '&lt;br&gt;&lt;br&gt;&lt;br&gt;This Form was submitted from: ' . $_SERVER['HTTP_REFERER'] : '';

$html_before = '&lt;table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" bgcolor="#eeeeee" style="width: 100%; height: 100%; padding: 50px 0 50px 0;"&gt;
			&lt;tr&gt;
				&lt;td align="center" valign="top"&gt;
					&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" bgcolor="#ffffff" style="width: 84%;"&gt;
						&lt;tr&gt;
							&lt;td align="center" valign="top"&gt;
								';

$html_after = '&lt;/td&gt;
						&lt;/tr&gt;
					&lt;/table&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;';

if( $template == 'text' ) {
	$body = implode( "&lt;br&gt;", $response ) . $referrer;
} else {
	$html = $html_before . '&lt;!-- / Header --&gt;
								&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" style="width: 84%;"&gt;
									&lt;tr&gt;
										&lt;td style="padding: 30px 0 30px 0; border-bottom: solid 1px #eeeeee; font-size: 30px; font-weight: bold; text-decoration: none; color: #000000;" align="left"&gt;
											' . $html_title . '
										&lt;/td&gt;
									&lt;/tr&gt;
								&lt;/table&gt;

								&lt;!-- / Sub-Header --&gt;
								&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" style="width: 84%; padding: 60px 0 30px 0;""&gt;
									' . implode( '', $response ) . '
								&lt;/table&gt;

								&lt;!-- / Footer --&gt;
								&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" align="center"&gt;
									&lt;tr&gt;
										&lt;td align="center"&gt;
											&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" align="center" style="border-top: 1px solid #eeeeee; width: 84%;"&gt;
												&lt;tr&gt;
													&lt;td style="color: #d5d5d5; text-align: center; font-size: 12px; padding: 30px 0 30px 0; line-height: 22px;"&gt;' . strip_tags( $referrer ) . '&lt;/td&gt;
												&lt;/tr&gt;
											&lt;/table&gt;
										&lt;/td&gt;
									&lt;/tr&gt;
								&lt;/table&gt;
								' . $html_after;

	$body = $html;
}

if( $autores && !empty( $replyto_e ) ) {
	$autoresponder = new PHPMailer();

	/* Add your Auto-Responder SMTP Codes after this Line */

	// End of Auto-Responder SMTP

	$autoresponder-&gt;SetFrom( $fromemail['email'] , $fromemail['name'] );
	if( !empty( $replyto_n ) ) {
		$autoresponder-&gt;AddAddress( $replyto_e , $replyto_n );
	} else {
		$autoresponder-&gt;AddAddress( $replyto_e );
	}
	$autoresponder-&gt;Subject = $ar_subject;

	$ar_body = $html_before . '&lt;!-- / Header --&gt;
				&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" style="width: 84%;"&gt;
					&lt;tr&gt;
						&lt;td style="padding: 30px 0 30px 0; border-bottom: solid 1px #eeeeee; font-size: 30px; font-weight: bold; text-decoration: none; color: #000000;" align="left"&gt;
							' . $ar_title . '
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;

				&lt;!-- / Sub-Header --&gt;
				&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" style="width: 84%; padding: 60px 0 30px 0;""&gt;
					&lt;tr&gt;
						&lt;td style="font-size: 16px; line-height: 26px; color: #777777; padding: 0 15px 30px 0;" align="left"&gt;' . $ar_message . '&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;

				&lt;!-- / Footer --&gt;
				&lt;table border="0" cellpadding="0" cellspacing="0" width="100%" align="center"&gt;
					&lt;tr&gt;
						&lt;td align="center"&gt;
							&lt;table border="0" cellpadding="0" cellspacing="0" width="84%" align="center" style="border-top: 1px solid #eeeeee; width: 84%;"&gt;
								&lt;tr&gt;
									&lt;td style="color: #d5d5d5; text-align: center; font-size: 12px; padding: 30px 0 30px 0; line-height: 22px;"&gt;' . $ar_footer . '&lt;/td&gt;
								&lt;/tr&gt;
							&lt;/table&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;
				' . $html_after;

	$autoresponder-&gt;MsgHTML( $ar_body );
	$autoresponder-&gt;CharSet = "UTF-8";
}

$mail-&gt;MsgHTML( $body );
$mail-&gt;CharSet = "UTF-8";
$sendEmail = $mail-&gt;Send();

if( $sendEmail == true ):

	if( $autores && !empty( $replyto_e ) ) {
		$send_arEmail = $autoresponder-&gt;Send();
	}

	echo '{ "alert": "success", "message": "' . $message['success'] . '" }';
else:
	echo '{ "alert": "error", "message": "' . $message['error'] . '&lt;br&gt;&lt;br&gt;**Reason:**&lt;br&gt;' . $mail-&gt;ErrorInfo . '" }';
endif;

} else {
echo '{ "alert": "error", "message": "' . $message['error_unexpected'] . '" }';
}

Have the same question, or something new?

Sign in to the Canvas dashboard to reply or open your own topic. Canvas owners get direct help from the SemiColonWeb team.

Reply on the dashboard