PHP-файл обработки с плагином проверки формы jQuery

0

Я использую jQuery validate form plugin для получения электронной почты из моего контакта с формой. Мой код, кажется, работает, но я не получаю почту. Я вижу сообщение "Форма отправлена" в WAMP. Я настроил свой SMTP-сервер, и у меня нет сообщения об ошибке от WAMP.

Моя форма: http://jsfiddle.net/Xroad/2pLS2/24/

Что не так?

<?php
 if(isset($_POST) && isset($_POST['form_firstname']) && isset($_POST['form_name']) && isset($_POST['form_email']) && isset($_POST['form_telephone']) && isset($_POST['form_message'])) {
    extract($_POST);
    if(!empty($form_firstname) && !empty($form_name) && !empty($form_email) && !empty($form_telephone) && !empty($form_message)) {
        $to = "[email protected]"; // My real email
        $subjet = "Contact from the site";

        $msg = stripslashes($form_message);
        $msg = "A question came \n 
        Firstname : $form_firstname \n
        Name : $form_name \n
        Email : $form_email \n
        Message : $form_message";
        mail($to, $subjet, $msg);
        echo "Form sent";
    } else {
        echo "You have not filled in the field";
    }
 }
?>

<form id="form-general" action="php/traitement.php" method="post">
  • 0
    Какова возвращаемая стоимость вашего звонка в mail() ?
  • 0
    Вы проверили папку со спамом?
Показать ещё 4 комментария
Теги:
forms

2 ответа

1

я думаю, что у вас проблемы с вашим хостом, поэтому мы пытаемся использовать gmail SMTP-сервер для отправки писем.

для этого я собираюсь использовать электронную библиотеку под названием Swift, загрузите ее бесплатно здесь http://swiftmailer.org/, как только вы ее скачали, просто переименуйте папку в swift и настройте username и password $smtp_settings ( который вы используете для входа в свою учетную запись gmail) и убедитесь, что требуемый файл

require_once dirname(__FILE__).'/swift/lib/swift_required.php';

находится на правильном пути. (так как теперь вы можете просто иметь быструю папку в том же корневом каталоге почтового файла)

<?php
function send_mail($to, $from, $subject='', $body='', $smtp=array()){

    // be sure this point where the swift package is...
    require_once dirname(__FILE__).'/swift/lib/swift_required.php';

    $settings = (object)$smtp;

    $transport = Swift_SmtpTransport::newInstance($settings->host, $settings->port, $settings->encryption)
    ->setUsername($settings->username)
    ->setPassword($settings->password);

    $mailer = Swift_Mailer::newInstance($transport);

    $_from = is_array($from) ? $from : array($from);

    $_to = is_array($to) ? $to : array($to);

    $message = Swift_Message::newInstance($subject)
    ->setFrom($_from)
    ->setTo($_to)
    ->setBody($body);

    $result = $mailer->send($message);

    return $result;
}

if(isset($_POST) && isset($_POST['form_firstname']) && isset($_POST['form_name']) && isset($_POST['form_email']) && isset($_POST['form_telephone']) && isset($_POST['form_message'])) {
    extract($_POST);
    if(!empty($form_firstname) && !empty($form_name) && !empty($form_email) && !empty($form_telephone) && !empty($form_message)) {

        // SMTP Server Configuration
        $smtp_settings = array(
            'host' => 'smtp.gmail.com',
            'port' => 465,
            'encryption' => 'ssl',
            'username' => '[email protected]',
            'password' => '************',
            );

        // Send an email to client and a copy to us...
        $to = '[email protected]'; // who receive

        $from = array('[email protected]' => 'My Site Name'); // who send

        $subject = 'Contact from the site';

        //$message = stripslashes($form_message)."\r\n"; 
        $message  = 'A question came'."\r\n"; 
        $message .= 'Firstname : '.$form_firstname."\r\n"; 
        $message .= 'Name : '.$form_name."\r\n"; 
        $message .= 'Email : '.$form_email."\r\n"; 
        $message .= 'Message : '.$form_message."\r\n";

        if(send_mail($to, $from, $subject, $message, $smtp_settings)){
            echo "Email sent";
        } else {
            echo "Email not sent";
        }

    } else {
        echo "You have not filled in the field";
    }
}
?>
  • 0
    Спасибо за ваш код, который хорошо работает, и, наконец, у меня есть «Форма не отправлена», которая появляется в конце. Так что у меня где-то возникла проблема. Возможно, конфликт с плагином формы проверки jQuery?
  • 0
    @Xroad: проблема с вашим хостом (удаленным или локальным). так что попробуйте отправить его через SMTP-сервер Gmail, как в моем обновленном коде ...
Показать ещё 5 комментариев
1

Ну, в случае, если простая функция mail() без какого-либо другого кода не доставляет почту в ваш почтовый ящик, похоже, ваш SMTP больше настраивается.

Делайте почту ("[email protected]", "Контакт с сайта", "Тест") работают сначала, а остальная часть вашего кода, вероятно, хороша.

ОБНОВИТЬ

Значение по умолчанию SMTP - localhost. По моему мнению, вы не можете разрешить домен SMTP (тот, который в настоящее время находится в вашем php.ini)! Вы можете проверить это на консоли с помощью telnet SMTP 25 (возможно, вам потребуется включить telnet).

Во всяком случае, убедитесь, что у вас есть MTA с другой стороны - я бы предпочел бы вам позвонить вашему системному администратору и спросить его о вашем SMTP-хосте и порту.

Просто чтобы предупредить вас - если вам нужно пройти аутентификацию против вашего MTA, вам придется найти другое решение, потому что php mail() (по моим сведениям) не может этого сделать. Найдите SwiftMailer и PhpMailer, которые приходят с множеством примеров.

Обновление 2

Ну, sendmail.exe поставляется с собственным конфигурационным файлом, где вам нужно ввести свой SMTP-сервер, порт и учетные данные!

Обновление 3

Поддержка sendmail.exe TLS не обновлялась с 2008 года. Версия Windows имеет последнее обновление 3 года назад и в зависимости от того, какую загрузку вы выбрали, у вас может оказаться даже более старая версия. Хотя он работает в целом, существует ряд сообщений о проблемах.

Даже автор sendmail.exe рекомендует MSMTP как отличную альтернативу с открытым исходным кодом, и даже blat как более мощный инструмент. Единственный недостаток, который я вижу, состоит в том, что у них есть немного больше опций и использование другого формата конфигурации, который может выглядеть более сложным для настройки.

  • 0
    Спасибо, форма не отправлена. Я не знаю почему. Конфликт с плагином проверки формы jQuery?
  • 0
    @Xroad - не проблема jQuery, по крайней мере, пока. Это проблема вашего агента пересылки почты. Какую конфигурацию вы сделали со своим SMTP-сервером? Какие тесты вы провели, чтобы подтвердить, что новая конфигурация работает?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню