Скрипт должен отправить электронное письмо, содержащее значения отправки формы, но электронное письмо не отправляется - PullRequest
0 голосов
/ 05 апреля 2011

Итак, у меня есть HTML-форма с некоторым PHP, но я не получаю никаких писем после отправки. Я не могу найти проблему! ты можешь мне помочь?

  • Попытка изменить if (isset ($ _ POST ['submit'])) {на 'enviar', но все еще не работает.

  • попытался добавить эхо, чтобы увидеть, где это не работает. единственное утверждение, которое останавливается на операторе else - это полоски.

Фрагмент формы:

<div id="contact-wrapper">

    <?php if(isset($hasError)) { //If errors are found ?>
        <p class="error">Please check if you entered valid information.</p>
    <?php } ?>

    <?php if(isset($emailSent) && $emailSent == true) { //If email is sent ?>
        <p><strong>Email sent with success!</strong></p>
        <p>Thank you for using our contact form <strong><?php echo $name;?></strong>, we will contact you soon.</p>
    <?php } ?>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform">
        <div>
            <label for="name"><strong>Name:</strong></label>
            <input type="text" size="50" name="contactname" id="contactname" value="" class="required" />
        </div>

        <div>
            <label for="email"><strong>E-mail:</strong></label>
            <input type="text" size="50" name="email" id="email" value="" class="required email" />
        </div>

        <div>
            <label for="subject"><strong>Subject:</strong></label>
            <input type="text" size="50" name="subject" id="subject" value="" class="required" />
        </div>

        <div>
            <label for="message"><strong>Message:</strong></label>
            <textarea rows="5" cols="50" name="message" id="message" class="required"></textarea>
        </div>
        <input type="submit" value="enviar" name="submit" id="submit" />
    </form>
    </div>

и PHP:

<?php
//If the form is submitted
if(isset($_POST['submit'])) {

    //Check to make sure that the name field is not empty
    if(trim($_POST['contactname']) == '') {
        $hasError = true;
    } else {
        $name = trim($_POST['contactname']);
    }

    //Check to make sure that the subject field is not empty
    if(trim($_POST['subject']) == '') {
        $hasError = true;
    } else {
        $subject = trim($_POST['subject']);
    }

    //Check to make sure sure that a valid email address is submitted
    if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }

    //Check to make sure comments were entered
    if(trim($_POST['message']) == '') {
        $hasError = true;
    } else {
        if(function_exists('stripslashes')) {
            $comments = stripslashes(trim($_POST['message']));
        } else {
            $comments = trim($_POST['message']);
        }
    }

    //If there is no error, send the email
    if(!isset($hasError)) {
        $emailTo = 'myemail@email.com'; //Put your own email address here
        $body = "Name: $name \n\nEmail: $email \n\nSubject: $subject \n\nComments:\n $comments";
        $headers = 'From: My Site <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

        mail($emailTo, $subject, $body, $headers);
        $emailSent = true;
    }
}
?>

Ответы [ 3 ]

5 голосов
/ 05 апреля 2011

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

$sent = mail($emailTo, $subject, $body, $headers);
var_dump($sent);

Что выводит этот код при размещении в соответствующем месте?

0 голосов
/ 07 апреля 2011

Если это контактная форма WordPress, для начала:

mail($emailTo, $subject, $body, $headers);

должно быть:

wp_mail($emailTo, $subject, $body, $headers);

См .: wp_mail codex

Теперь вам нужно проверить настройки электронной почты, а также настройки электронной почты WordPress.

0 голосов
/ 05 апреля 2011

Вы пробовали простую страницу php для создания тестового электронного письма (например, с фиксированным содержимым), и я предполагаю, что веб-сервер настроил электронную почту и готов ретранслировать ваш адрес?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...