2012-02-09 5 views
0

У меня есть следующий код и перед отправкой я проверяю, что поля заполнены или нет ... при отправке письма я получаю сообщение «Мы получили вашу электронную почту». но я не вижу электронную почту в своем почтовом ящике, попробовал ее с двумя разными электронными письмами, но с теми же результатами ... не могу понять, почему вы можете мне помочь. вот код:отправка электронной почты с php

if($badinput == NULL){ ?> 
    <h2>We have received your email .</h2> 
    </div> 
    <?php 

    require_once("libs/inc.email_form.php"); 

    $email_fields = array(
     "Name"    => $_POST['name'], 
     "E-Mail Address"  => $_POST['email'], 
     "Telephone Number"  => $_POST['telephone'], 
     "Callback"   => $_POST['callback'], 
     "Enquiry"   => $_POST['enquiry'] 
    ); 

    contact_form("[email protected]", $_POST['email'], " Enquiry", "test", $email_fields); 
} 
else 
{ 
    echo $badinput . "</div>"; 
} 
?> 

здесь функция в LIBS/inc.email_form.php:

function contact_form($to, $from, $subject, $message, $fields){ 
    if(!$to || !$from || !$subject || !$message || !$fields){ 
     print form function is missing a variable"; 
     return false; 
    } 

    $msg_body = $message."\n\nSubmitted ".date("l, F j, Y, g:i a")." [EST]\n\nSUBMISSION DETAILS:\n"; 

    // clean up all the variables 
    foreach($fields as $k => $v){ 
     $msg_body .= "\n".$k.": ".clean_var($v); 
    } 

    // add additional info 
    $referer = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "could not determine" ; 
    $user_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : "could not determine" ; 
    $msg_body .= "\n\nAdditional Info:\nIP = ".$_SERVER['REMOTE_ADDR']."Browser Info: ".$user_agent."Referral: ".$referer." \r"; 

    // send it 
    $emailer = new emailer; 
    if(is_array($to)){ 
     foreach($to as $t){ 
      $emailer->send_email($from, $subject, $msg_body, $to); 
     } 
    }else{ 
     $emailer->send_email($from, $subject, $msg_body, $to); 
    } 

    return true; 
} 
+0

да я делаю, как я посылы с других сайтов – Zaki

ответ

2

Я не вижу никаких оснований для использования класса, если это только возможно, все еще используя стандартный PHP почты().

Пожалуйста, попробуйте использовать этот код, чтобы проверить, если почту действительно присылают:

if (mail('[email protected]', 'subject', 'test email')) 
    echo 'Mail was sent'; 
else 
    echo 'Mail could not be sent'; 

Также, пожалуйста, проверьте спам-папку как много писем, отправляемую через PHP почту() получить помечено как спам из-за неправильные или неполные заголовки или из-за злоупотребления и плохой репутации IP (особенно если вы используете общий хостинг).

+0

хорошо я попробовал его с этим и я получаю по электронной почте, но не с моей оригинальной функцией: $ при условии = "тест"; \t $ message = "mesage"; \t $ headers. = 'From: test'. "\ Г \ п"; \t \t mail ("myemailaddress", $ subject, $ message, $ headers); \t \t echo («отправлено по электронной почте»); – Zaki

1

Не кажется, что вы действительно проверяете возвращаемое значение класса $ mailer, поэтому функция, сообщающая вам, что ваша электронная почта отправлена, действительно является ложным положительным.

Я хотел бы изменить:

$emailer->send_email($from, $subject, $msg_body, $to); 

к:

$result = $emailer->send_email($from, $subject, $msg_body, $to); 
print_r($result); 

и проверить, что возвращается класс $ Emailer. скорее всего, это будет «0» для неудачных или «1» для успеха.

+0

Я пробовал это, и я получаю 1 ... но все равно нет электронной почты, я тоже проверял нежелательную электронную почту – Zaki

+0

@ Sam1 можете ли вы опубликовать zip-архив своего скрипта/сценария электронной почты где-нибудь, чтобы скачать, чтобы я мог посмотреть? – vero

0

Это 100% точное представление вашего сценария?

Существует, по-видимому, серьезная синтаксическая ошибка, которая, если она каким-то образом не выйдет из строя, по крайней мере полностью изменит функциональность скрипта.

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print form function is missing a variable"; 

Конечно, это должно быть:

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print "form function is missing a variable";