2010-06-10 2 views
4

Мой код электронной почты не работает.Мой адрес электронной почты PHP код не работает

<?php 
if(isset($_POST['send'])){ 
$to = "[email protected]" ; // change all the following to $_POST 
$from = $_REQUEST['Email'] ; 
$name = $_REQUEST['Name'] ; 
$headers = "From: $from"; 
$subject = "Web Contact Data"; 

$fields = array(); 
$fields{"Name"} = "Name"; 
$fields{"Email"} = "Email"; 

$body = "We have received the following information:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); } 

$subject2 = "Thank you for contacting us."; 
$autoreply = "<html><body><p>Dear " . $name . ",</p><p>Thank you for registering with ERB Images.</p> 
<p>To make sure that you continue to receive our email communications, we suggest that you add [email protected] to your address book or Safe Senders list. </p> 
<p>In Microsoft Outlook, for example, you can add us to your address book by right clicking our address in the 
'From' area above and selecting 'Add to Outlook Contacts' in the list that appears.</p> 
<p>We look forward to you visiting the site, and can assure you that your privacy will continue to be respected at all times.</p><p>Yours sincerely.</p><p>Edward R Benson</p><p>Edward Benson Esq.<br />Founder<br />ERB Images</p><p>www.erbimages.com</p></body></html>"; 

    $headers2 = 'MIME-Version: 1.0' . "\r\n"; 
    $headers2 .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers2 .= 'From: [email protected]' . "\r\n"; 

mail($from, $subject2, $autoreply, $headers2); 
    $send=false; 
    if($name == '') {$error= "You did not enter your name, please try again.";} 
    else { 
    if(!preg_match("/^[[:alnum:]][a-z0-9_.'+-]*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$/",$from)) {$error= "You did not enter a valid email address, please try again.";} 
    else { 
    $send = mail($to, $subject, $body, $headers); 
    $send2 = mail($from, $subject2, $autoreply, $headers2); 
    } 
    if(!isset($error) && !$send) 
     $error= "We have encountered an error sending your mail, please notify [email protected]"; } 
}// end of if(isset($_POST['send'])) 
?> 

<?php include("http://erbimages.com/php/doctype/index.php"); ?> 

<?php include("http://erbimages.com/php/head/index.php"); ?> 

<div class="newsletter"> 
    <ul> 
     <form method="post" action="http://lilyandbenson.com/newletter/index.php"> 
      <li> 
       <input size="20" maxlength="50" name="Name" value="Name" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"> 
      </li> 
      <li> 
       <input size="20" maxlength="50" name="Email" value="Email" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"> 
      </li> 
      <li> 
       <input type="submit" name="send" value="Send" id="register_send"> 
      </li> 
     </form> 
     <?php 
     ?> 
    </ul> 
    <div class="clear"></div> 
</div> 

<div class="section_error"> 
     <?php 
     if(isset($error)) 
      echo '<span id="section_error">'.$error.'</span>'; 
     if(isset($send) && $send== true){ 
      echo 'Thank you, your message has been sent.'; 
     } 
     if(!isset($_POST['send']) || isset($error)) 
     ?> 

    <div class="clear"></div> 
</div> 

</body> 
</html> 
+0

обязательно переформатировать вопрос. – Lizard

+0

Что значит «не работает»? – Palantir

+0

Что означает «не работает»? Вы получаете ошибки? В браузере? В журнале ошибок? – Quentin

ответ

0

Читайте документацию здесь http://php.net/manual/en/function.mail.php

Специально эта часть:

«Параметр additional_parameters может использоваться для передачи дополнительных флагов в качестве параметров командной строки для программы сконфигурированной для использования при отправке почты, как определено параметром конфигурации sendmail_path.Например, это можно использовать для установки адреса отправителя конверта при использовании sendmail с параметром -f sendmail.

Пользователь, которому webse rver, как должен быть добавлен в качестве доверенного пользователя в конфигурацию sendmail, чтобы предотвратить добавление заголовка «X-Warning» в сообщение, когда отправитель конверта (-f) установлен с использованием этого метода. Для Sendmail пользователей, этот файл/и т.д./почта/доверенные пользователи.»

Таким образом, вы должны иметь sendmail установлены в вашей системе, и пользователь работает веб-сервер должен иметь права отправить по электронной почте через sendmail.

Проверить /var/log/apache2/error.log (если вы находитесь под Linux, и вы используете сервер Apache) или любой другой журнал для веб-сервера, чтобы найти ключ.

1

Я не знаю ваших конкретных потребностей на это, но если это для Professionnal проекта вы должны использовать что-то вроде PHPMailer, которое будет абстрагировать весь вопрос, связанный с почтой, от вашего кода.

Поскольку ваш текущий код не работает, если почтовый клиент-получатель не поддерживает HTML-сообщение, например. Что произойдет, если вам нужно использовать SMTP-сервер вместо функции php mail? и т. Д.

Больше того, что SMTP RFC на самом деле не уважают среди серверов SMTP, этот тип вещей будет обрабатываться PHPMailer.

1

1) «Мой электронный код не работает» не является сообщением об ошибке - вы должны быть конкретными о том, что ваши ожидания, и почему ваш код появляется не для удовлетворения этих ожиданий

2) Вы не нужно все этот код только для того, чтобы воспроизвести проблему.

Возможно, вам будет оказана дополнительная помощь, если вы являетесь конкретными и предоставляете соответствующую информацию, и опускаете несущественные вещи.

Код сам по себе не очень хорошо. В дополнение к отсутствию каких-либо релевантных комментариев и ловушек ошибок, широко открыты для злоупотреблений посредством вставки заголовка электронной почты. Ваше регулярное выражение для проверки адресов электронной почты будет отбрасывать действительные адреса и принимать недопустимые. IIRC, используя фигурные скобки вокруг индексов массивов, устарел. Но, вероятно, не потому, что это не соответствует вашим ожиданиям.

Предполагая, что почта не получает доставлена ​​вообще, попробуйте:

set_error_reporting(E_ALL); 
init_set("display_errors", 1); 
trigger_error("If you can't see this then your error reporting is not working"); 
mail("[email protected]", "test","hello world"); 

Большинство проблемы почт обусловлены использование неправильной конфигурации PHP или проблемы в системах обработки электронной почты.

Существует очень хорошая статья о диагностике проблем программного обеспечения и получении помощи для их устранения. here.Пожалуйста, прочитайте его.

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