0

I've been trying to find the solution to this problem through some forums but I still can't get it to work. I have a simple PHP contact form uploaded to a website: http://proyectohales.com/anamarco

The form is the following

<form method="post" id="meetingform" name="meetingform" class="meeting-form clearfix" action="mail/meeting.php">
<input name="mname" id="mname" type="text" placeholder="Nombre" class="form-control input-lg">
<input name="memail" id="memail" type="email" placeholder="Email" class="form-control input-lg">
<input name="mphone" id="mphone" type="text" placeholder="Teléfono" class="form-control input-lg">
<textarea  name="mcase" id="mcase" placeholder="Mensaje" class="form-control input-lg"></textarea>
<button name="msubmit" id="msubmit" type="submit" class="btn btn-primary btn-block btn-lg margin-20"><i class="fa fa-send-o"></i> Enviar</button>
</form>

And the php code is:

<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
    return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$mname     = $_POST['mname'];
$memail    = $_POST['memail'];
$mphone    = $_POST['mphone'];
$mcase  = $_POST['mcase'];

if(trim($mname) == '') {
    echo '<div class="alert alert-error">Introduzca un nombre.</div>';
    exit();
} else if(trim($memail) == '') {
    echo '<div class="alert alert-error">Introduzca un email.</div>';
    exit();
} else if(!isEmail($memail)) {
    echo '<div class="alert alert-error">Introduzca un email válido.</div>';
    exit();
} else if(trim($mphone) == '') {
    echo '<div class="alert alert-error">Introduzca un número de teléfono.</div>';
    exit();
}


// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "joe.doe@yourdomain.com";

//$address = "example@websiteurl.com";
$address = "OUR MAIL GOES HERE AND IS CORRECTLY WRITTEN";


// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';
$e_subject = 'Contacto web Ana Marco';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "Has sido contactada por $mname" . PHP_EOL . PHP_EOL;
$e_reply = "Puedes contactar con $name por teléfono ($mphone) o email ($memail)";

$msg = wordwrap( $e_body . $e_reply, 70 );

$headers = "From: $memail" . PHP_EOL;
$headers .= "Reply-To: $memail" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

    // Email has sent successfully, echo a success page.

    echo "<div class='alert alert-success'>";
    echo "<h3>Email enviado con éxito.</h3><br>";
    echo "<p>Gracias. Su mensaje ha sido enviado.</p>";
    echo "</div>";

} else {

    echo 'ERROR!';

}

I don't understand why it won't work (no email is received in our inbox). Could you please help me out figure it out? Maybe it's some small detail in the code that I can't find.

Thank you!

Alex
  • 69
  • 2
  • 9
  • 2
    _"why it won't work"_ - you'd have to tell us what exactly doesn't work as expected. – Jeff Apr 22 '18 at 14:58
  • Sorry, Jeff, let me add: the e-mail is not sent. That is, no email is received in the inbox – Alex Apr 22 '18 at 14:59
  • do you get the 'ERROR!' ? – Jeff Apr 22 '18 at 15:00
  • No, that's what's weird. It says "email sent successfully", but no email is received. We've tried multiple times – you can try yourself if you want. And we can't figure out what's up. – Alex Apr 22 '18 at 15:00
  • I can't try, because now it depends on your server configuration. Here's a guide of what to do to find the problem: https://stackoverflow.com/questions/24644436/php-mail-function-doesnt-complete-sending-of-e-mail/24644450#24644450 – Jeff Apr 22 '18 at 15:02
  • Thank you, @Jeff! So you don't see any problem with the code, right? I will check with my hosting then and follow the guide. Thank you! – Alex Apr 22 '18 at 15:06
  • There can be many reasons why the email isn't sent (or rejected by the mail server). It seems like you let anyone send emails to and from any address. Properly configured mail servers don't accept emails coming from anywhere. They do a lookup and check if the web server is allowed to send emails using the domain. I would recommend sending from one single address and send it through a SMTP server using one of the tried and tested mail libraries, like PHPMailer or SwiftMailer instead. – M. Eriksson Apr 22 '18 at 15:11

0 Answers0