Astrus
Astrus

Reputation: 193

PHP contact form not sending emails

I downloaded a template for my website.
The template comes with a contact form that should work.

There is my MailHandler.php file (in French) :

<?php
    $owner_email='[email protected]';
    //SMTP server settings
    $host = '';
    $port = '465';//"587";
    $username = '';
    $password = '';

    $subject='Vous avez reçu un message depuis le formulaire de contact de votre site ';
    $user_email='';
    $message_body='';
    $message_type='html';

    $max_file_size=50;//MB
    $file_types='/(doc|docx|txt|pdf|zip|rar)$/';
    $error_text='Quelque chose cest mal passe';
    $error_text_filesize='File size must be less than';
    $error_text_filetype='Failed to upload file. This file type is not allowed. Accepted files types: doc, docx, txt, pdf, zip, rar.';

    $private_recaptcha_key='6LeZwukSAAAAACmqrbLmdpvdhC68NLB1c9EA5vzU'; //localhost


    $use_recaptcha=isset( $_POST["recaptcha_challenge_field"]) and isset($_POST["recaptcha_response_field"]);
    $use_smtp=($host=='' or $username=='' or $password=='');
    $max_file_size*=1048576;

    if($owner_email=='' || $owner_email=='#'){
        die('Attention, recipient e-mail is not set! Please define "owner_email" variable in the MailHanlder.php file.');
    }

    if(preg_match('/^(127\.|192\.168\.)/',$_SERVER['REMOTE_ADDR'])){
        die('Attention, contact form will not work locally! Please upload your template to a live hosting server.');
    }

    if($use_recaptcha){
        require_once('recaptchalib.php');
        $resp = recaptcha_check_answer ($private_recaptcha_key,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);
        if (!$resp->is_valid){
            die ('wrong captcha');
        }
    }

    if(isset($_POST['name']) and $_POST['name'] != ''){$message_body .= '<p>Visitor: ' . $_POST['name'] . '</p>' . "\n" . '<br>' . "\n"; $subject.=$_POST['name'];}
    if(isset($_POST['email']) and $_POST['email'] != ''){$message_body .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n" . '<br>' . "\n"; $user_email=$_POST['email'];}
    if(isset($_POST['state']) and $_POST['state'] != ''){$message_body .= '<p>State: ' . $_POST['state'] . '</p>' . "\n" . '<br>' . "\n";}
    if(isset($_POST['phone']) and $_POST['phone'] != ''){$message_body .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n" . '<br>' . "\n";}
    if(isset($_POST['fax']) and $_POST['fax'] != ''){$message_body .= '<p>Fax Number: ' . $_POST['fax'] . '</p>' . "\n" . '<br>' . "\n";}
    if(isset($_POST['message']) and $_POST['message'] != ''){$message_body .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";}
    if(isset($_POST['stripHTML']) and $_POST['stripHTML']=='true'){$message_body = strip_tags($message_body);$message_type='text';}

try{
    include "libmail.php";
    $m= new Mail("utf-8");
    $m->From($user_email);
    $m->To($owner_email);
    $m->Subject($subject);
    $m->Body($message_body,$message_type);
    //$m->log_on(true);

    if(isset($_FILES['attachment'])){
        if($_FILES['attachment']['size']>$max_file_size){
            $error_text=$error_text_filesize . ' ' . $max_file_size . 'bytes';
            die($error_text);
        }else{
            if(preg_match($file_types,$_FILES['attachment']['name'])){
                $m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment');
            }else{
                $error_text=$error_text_filetype;
                die($error_text);
            }
        }
    }
    if(!$use_smtp){
        $m->smtp_on( $host, $username, $password, $port);
    }

    if($m->Send()){
        die('success');
    }

}catch(Exception $mail){
    die($mail);
}
?>

When I send a mail from the contact form, it shows me that it should have been sent because of the pop-up "Success !". But I never received any mails.

Upvotes: 0

Views: 1682

Answers (3)

broch
broch

Reputation: 433

Actually you should be able to use Gmail. It is just really slow. Use

//SMTP server settings
$host = 'tls://smtp.gmail.com';
$port = '587';
$username = '[email protected]';
$password = 'your_password';

Make sure your mail library is using smtp. Else use phpmailer as others suggested with the above settings.

Upvotes: 1

BenyaminRmb
BenyaminRmb

Reputation: 163

If you want to send email, you should download PHPMailer and write this code

//in localhost
 require("phpmailer/AutoloadPHPMailer");    

$mail=new PHPMailer(true);
$mail->IsSMTP();
if(isset($_POST["btn"]))
{
    try
    {
        $mail->Host='__host addres__';
        $mail->SMTPAuth=true;
        $mail->SMTPSecure="ssl";
        $mail->Port=465;
        $mail->Username="__User Name__";
        $mail->Password="__Password__";
        $mail->AddAddress($_POST["to"]);
        $mail->SetFrom("__From__","__Name__");
        $mail->Subject=$_POST["subject"];
        $mail->CharSet="UTF-8";
        $mail->ContentType="text/htm";
        $mail->MsgHTML($_POST["content"]);
        $mail->Send();
        echo '<font color="#00CC00" size="2" face="tahoma">email send</font>';
    }
    catch(phpmailerException $e)
    {
        echo $e->errorMessage();
    }
    catch(Exception $e)
    {
        echo $e->getMessage();
    }
}

And this is Html code

<form id="form" action="" method="post" style="border:2px solid #03F;width:350px;margin-left:400px;">
<table width="400" >
  <tr>
    <td style="text-align: center">To:</td>
    <td><input type="text" name="to" id="to" style="border:2px solid #060"></td>
  </tr>
  <tr>
    <td style="text-align: center">Subject:</td>
    <td><input type="text" name="subject" id="subject" style="border:2px solid #060"></td>
  </tr>
  <tr>
    <td style="text-align: center">Content</td>
    <td><textarea name="content" cols="30" rows="5" id="content" style="border:2px solid #060"></textarea></td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" name="btn" id="btn" value="SEND"></td>
  </tr>
</table>
</form>

Upvotes: 0

Pravesh Agrawal
Pravesh Agrawal

Reputation: 879

You cannot use your gmail email as sender email $owner_email='[email protected]';

Either your sender email or recipient email should be an email that is configured on your website's mail server or cPanel.

Due to security reasons, most hosting service providers do not allow this thing.

Change it to an email address which is configured on your website's mail server, it should work then.

Upvotes: 0

Related Questions