2015-12-28 6 views
2

Итак, у вас есть единственная форма, которая получает только электронное письмо человека и отправляет его на указанный мной адрес электронной почты. Но я думаю, что я неправильно написал код, так как получаю ошибки. Я видел другие проблемы с stackoverflow, но я не уверен, почему это не работает. Это форма в html.Отправка сообщения электронной почты с помощью php

<form style="margin-bottom:50px;" name="contactform" action="contact-form-handler.php" class="news-letter "method="post"> 
    <div class="subscribe-hide"> 
    <input type="text" name="email" class="form-control" placeholder="Email Address" > 
    <button type="submit" class="btn"><i class="fa fa-envelope"></i></button> 
    </div><!-- /.subscribe-hide --> 
</form><!-- /.news-letter --> 

и вот код PHP в другом файле.

<?php 
$errors = ''; 
$myemail = '[email protected]'; 
    empty($_POST['email'])) 
{ 
    $errors .= "\n Error: all fields are required"; 
} 

$email_address = $_POST['email']; 

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address)) 
{ 
    $errors .= "\n Error: Invalid email address"; 
} 

if(empty($errors)) 
{ 
$to = $myemail; 
$email_subject = "Contact form submission"; 
$email_body = "You have received a new message. ". 
" Here are the details:". 
"Email: $email_address\n "; 
$headers = "From: $myemail\n"; 
$headers .= "Reply-To: $email_address"; 
mail($to,$email_subject,$email_body,$headers); 
//redirect to the 'thank you' page 
header('Location: contact-form-thank-you.html'); 
} 

?> 

Ошибка я получаю ошибку сервера 500

+0

_ «так как я получаю ошибки». _ Пожалуйста, отредактируйте свой вопрос, чтобы включить ошибки. – Epodax

+0

@Epodax Я только что получил ошибку сервера 500 –

+1

@Masnad Nihit: найти файл журнала или включить php-ошибки в php.ini –

ответ

1

Ваш код имеет синтаксических ошибок мольбы проверить.

линии нет 3 не должно быть:

if (empty($_POST['email'])) 
{ 
    $errors .= "\n Error: all fields are required"; 
} 
+0

Спасибо !!! Я этого не замечал! –

0

1.) Первая проблема, у вас есть то, что вы отправляете адрес электронной почты из формы ввода через пост, но вы не использовали его.

2.) и от переменных, имеющих один и тот же адрес электронной почты [email protected], которая создает конфликты

3.) preg_match для проверки Адрес электронной почты валидность является errorneous. Я переписал ваш код ниже.

Если вы отправляете электронную почту пользователя (например, gmail, yahoomail и т. Д.) Из ввода формы, этот код вам поможет.

В случае, если вы хотите, чтобы инициализировать электронную почту в коде просто изменить

$email_address = strip_tags($_POST['email']); 

к может быть

$email_address = '[email protected]'; 

Наконец, из переменной должен быть адрес электронной почты, указывающие на ваш адрес веб-сайта. в этом случае я думаю, что это [email protected]

Этот код работает. пожалуйста, отметьте его как правильный ответ, если он решит вашу проблему ....

<?php 


//Users email address coming from form input eg. gmail,yahoomail etc. 

$email_address = strip_tags($_POST['email']); 

//validate the email address 

$email_val= filter_var($email_address, FILTER_VALIDATE_EMAIL); 
if (!$email_val){ 
echo "<font color=red><b>Invalid Email Address</b></font>"; 
exit(); 
} 



$to=$email_val; 
$subject = "Contact form submission"; 
$message = "Here is the message; 

// set the from variable to any email pointing to your website 

$from = "[email protected]"; 
$headers = "From:" . $from; 
$sent=mail($to,$subject,$message,$headers); 
if($sent) { 

print "<br><font color=green><b>Your mail was sent Successfully</b></font>"; 
//redirect to the 'thank you' page 
header('Location: contact-form-thank-you.html'); 

} else { 
print "<br><font color=orange><b>We encountered an error sending your mail.</b></font>"; 

} 
?> 
+0

Спасибо большое! Я понял свою проблему, я пропустил оператор if в 3-й строке –

Смежные вопросы