отправка электронной почты с php - PullRequest
0 голосов
/ 09 февраля 2012

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

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( "myemail@yahoo.co.uk",  $_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;
}

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Я не вижу причин для использования класса, если он, вероятно, все еще использует стандартную функцию PHP mail ().

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

if (mail('you@domain.ext', 'subject', 'test email'))
    echo 'Mail was sent';
else
    echo 'Mail could not be sent';

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

1 голос
/ 09 февраля 2012

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

Я бы изменил:

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

до:

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

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

0 голосов
/ 09 февраля 2012

Это 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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...