'your-email@website.com', // Your Email Address 'name' => 'Your Name' // 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 */ // 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 ) > $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' => $recaptcha_secret, 'response' => $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->success !== true ) { echo '{ "alert": "error", "message": "' . $message['captcha_invalid'] . '" }'; exit; } } /*------------------------------------------------- hCaptcha ---------------------------------------------------*/ if( isset( $submits['h-captcha-response'] ) ) { $hcaptcha_data = array( 'secret' => $hcaptcha_secret, 'response' => $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->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 => $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 © ' . date('Y') . ' SemiColonWeb. All Rights Reserved.'; $mail->Subject = !empty( $submits['subject'] ) ? $submits['subject'] : 'Form Response from your Website'; $mail->SetFrom( $fromemail['email'] , $fromemail['name'] ); if( !empty( $replyto ) ) { if( count( $replyto ) > 1 ) { $replyto_e = $submits[ $replyto[0] ]; $replyto_n = $submits[ $replyto[1] ]; $mail->AddReplyTo( $replyto_e , $replyto_n ); } elseif( count( $replyto ) == 1 ) { $replyto_e = $submits[ $replyto[0] ]; $mail->AddReplyTo( $replyto_e ); } } foreach( $toemails as $toemail ) { $mail->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 => $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 => $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 => $filevalue ) { if( is_array( $filevalue['name'] ) ) { $filecount = count( $filevalue['name'] ); for( $f = 0; $f < $filecount; $f++ ) { if ( isset( $_FILES[ $file ] ) && $_FILES[ $file ]['error'][ $f ] == UPLOAD_ERR_OK ) { $mail->IsHTML(true); $mail->AddAttachment( $_FILES[ $file ]['tmp_name'][ $f ], $_FILES[ $file ]['name'][ $f ] ); } } } else { if ( isset( $_FILES[ $file ] ) && $_FILES[ $file ]['error'] == UPLOAD_ERR_OK ) { $mail->IsHTML(true); $mail->AddAttachment( $_FILES[ $file ]['tmp_name'], $_FILES[ $file ]['name'] ); } } } $response = array(); foreach( $fields as $fieldname => $fieldvalue ) { if( $template == 'text' ) { $response[] = $fieldname . ': ' . $fieldvalue; } else { $fieldname = ' ' . $fieldname . ' '; $fieldvalue = ' ' . $fieldvalue . ' '; $response[] = $fieldname . $fieldvalue; } } $referrer = $_SERVER['HTTP_REFERER'] ? '


This Form was submitted from: ' . $_SERVER['HTTP_REFERER'] : ''; $html_before = '
'; $html_after = '
'; if( $template == 'text' ) { $body = implode( "
", $response ) . $referrer; } else { $html = $html_before . '
' . $html_title . '
' . implode( '', $response ) . '
' . strip_tags( $referrer ) . '
' . $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->SetFrom( $fromemail['email'] , $fromemail['name'] ); if( !empty( $replyto_n ) ) { $autoresponder->AddAddress( $replyto_e , $replyto_n ); } else { $autoresponder->AddAddress( $replyto_e ); } $autoresponder->Subject = $ar_subject; $ar_body = $html_before . '
' . $ar_title . '
' . $ar_message . '
' . $ar_footer . '
' . $html_after; $autoresponder->MsgHTML( $ar_body ); $autoresponder->CharSet = "UTF-8"; } $mail->MsgHTML( $body ); $mail->CharSet = "UTF-8"; $sendEmail = $mail->Send(); if( $sendEmail == true ): if( $autores && !empty( $replyto_e ) ) { $send_arEmail = $autoresponder->Send(); } echo '{ "alert": "success", "message": "' . $message['success'] . '" }'; else: echo '{ "alert": "error", "message": "' . $message['error'] . '

Reason:
' . $mail->ErrorInfo . '" }'; endif; } else { echo '{ "alert": "error", "message": "' . $message['error_unexpected'] . '" }'; }