1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

ROZWIĄZANE Problem z wysyłką emeil z formularza kontakowego

Dyskusja w 'WordPress, Joomla!, PHP, HTML, CSS' rozpoczęta przez użytkownika Daminaus31, 7 Listopad 2016.

  1. Daminaus31

    Daminaus31 Nowy użytkownik

    Wiadomości:
    4
    Docenione treści:
    0
    Mam problem z formularzem kontaktowym. Nie wysyła wiadomości. Strona na
    wordpressie. Zainstalowałem wtyczkę smtp i działa wysyłka poczty z wtyczki -test.Zainstalowałem Contact form 7 i tam po konfiguracji wysyła, ale chcę używać formularz oryginalny z motywu, a nie wtyczkę. Nie znalazłem odpowiedzi ani na forum ani w
    tematach pomocy home.pl. Wiem ,że muszę dopisać adres skrzynki stworzonej na
    serwerze do kodu formularza, ale nie mam pojęcia,
    w którym miejscu. Proszę o pomoc. Załączam kod strony z formularzem. .

    <?php
    $et_ptemplate_settings = array();
    $et_ptemplate_settings = maybe_unserialize( get_post_meta(get_the_ID(),'et_ptemplate_settings',true) );

    $fullwidth = isset( $et_ptemplate_settings['et_fullwidthpage'] ) ? (bool) $et_ptemplate_settings['et_fullwidthpage'] : false;

    $et_regenerate_numbers = isset( $et_ptemplate_settings['et_regenerate_numbers'] ) ? (bool) $et_ptemplate_settings['et_regenerate_numbers'] : false;

    $et_error_message = '';
    $et_contact_error = false;

    if ( isset($_POST['et_contactform_submit']) ) {
    if ( !isset($_POST['et_contact_captcha']) || empty($_POST['et_contact_captcha']) ) {
    $et_error_message .= '<p>' . esc_html__('Make sure you entered the captcha. ','Nimble') . '</p>';
    $et_contact_error = true;
    } else if ( $_POST['et_contact_captcha'] <> ( $_SESSION['et_first_digit'] + $_SESSION['et_second_digit'] ) ) {
    $et_numbers_string = $et_regenerate_numbers ? esc_html__('Numbers regenerated.','Nimble') : '';
    $et_error_message .= '<p>' . esc_html__('You entered the wrong number in captcha. ','Nimble') . $et_numbers_string . '</p>';

    if ($et_regenerate_numbers) {
    unset( $_SESSION['et_first_digit'] );
    unset( $_SESSION['et_second_digit'] );
    }

    $et_contact_error = true;
    } else if ( empty($_POST['et_contact_name']) || empty($_POST['et_contact_email']) || empty($_POST['et_contact_subject']) || empty($_POST['et_contact_message']) ){
    $et_error_message .= '<p>' . esc_html__('Make sure you fill all fields. ','Nimble') . '</p>';
    $et_contact_error = true;
    }

    if ( !is_email( $_POST['et_contact_email'] ) ) {
    $et_error_message .= '<p>' . esc_html__('Invalid Email. ','Nimble') . '</p>';
    $et_contact_error = true;
    }
    } else {
    $et_contact_error = true;
    if ( isset($_SESSION['et_first_digit'] ) ) unset( $_SESSION['et_first_digit'] );
    if ( isset($_SESSION['et_second_digit'] ) ) unset( $_SESSION['et_second_digit'] );
    }

    if ( !isset($_SESSION['et_first_digit'] ) ) $_SESSION['et_first_digit'] = $et_first_digit = rand(1, 15);
    else $et_first_digit = $_SESSION['et_first_digit'];

    if ( !isset($_SESSION['et_second_digit'] ) ) $_SESSION['et_second_digit'] = $et_second_digit = rand(1, 15);
    else $et_second_digit = $_SESSION['et_second_digit'];

    if ( ! $et_contact_error && isset( $_POST['_wpnonce-et-contact-form-submitted'] ) && wp_verify_nonce( $_POST['_wpnonce-et-contact-form-submitted'], 'et-contact-form-submit' ) ) {
    $et_email_to = ( isset($et_ptemplate_settings['et_email_to']) && !empty($et_ptemplate_settings['et_email_to']) ) ? $et_ptemplate_settings['et_email_to'] : get_site_option('admin_email');

    $et_site_name = is_multisite() ? $current_site->site_name : get_bloginfo('name');

    $contact_name = stripslashes( sanitize_text_field( $_POST['et_contact_name'] ) );
    $contact_email = sanitize_email( $_POST['et_contact_email'] );

    $headers = 'From: ' . $contact_name . ' <' . $contact_email . '>' . "\r\n";
    $headers .= 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>';

    wp_mail( apply_filters( 'et_contact_page_email_to', $et_email_to ), sprintf( '[%s] ' . stripslashes( sanitize_text_field( $_POST['et_contact_subject'] ) ), $et_site_name ), stripslashes( wp_strip_all_tags( $_POST['et_contact_message'] ) ), apply_filters( 'et_contact_page_headers', $headers, $contact_name, $contact_email) );



    $et_error_message = '<p>' . esc_html__('Thanks for contacting us','Nimble') . '</p>';
    }
    ?>
    <?php get_header(); ?>

    <div id="main-area"<?php if ( $fullwidth ) echo ' class="fullwidth"'; ?>>
    <div class="container">
    <div id="content-area" class="clearfix">
    <div id="left-area">
    <?php get_template_part('loop', 'page'); ?>

    <div id="et-contact" class="responsive">
    <div id="et-contact-message"><?php echo($et_error_message); ?> </div>

    <?php if ( $et_contact_error ) { ?>
    <form action="<?php echo esc_url( get_permalink( get_the_ID() ) ); ?>" method="post" id="et_contact_form">
    <div id="et_contact_left">
    <p class="clearfix">
    <label for="et_contact_name" class="et_contact_form_label"><?php esc_html_e('Name','Nimble'); ?></label>
    <input type="text" name="et_contact_name" value="<?php if ( isset($_POST['et_contact_name']) ) echo esc_attr($_POST['et_contact_name']); else esc_attr_e('Name','Nimble'); ?>" id="et_contact_name" class="input" />
    </p>

    <p class="clearfix">
    <label for="et_contact_email" class="et_contact_form_label"><?php esc_html_e('Email Address','Nimble'); ?></label>
    <input type="text" name="et_contact_email" value="<?php if ( isset($_POST['et_contact_email']) ) echo esc_attr($_POST['et_contact_email']); else esc_attr_e('Email Address','Nimble'); ?>" id="et_contact_email" class="input" />
    </p>

    <p class="clearfix">
    <label for="et_contact_subject" class="et_contact_form_label"><?php esc_html_e('Subject','Nimble'); ?></label>
    <input type="text" name="et_contact_subject" value="<?php if ( isset($_POST['et_contact_subject']) ) echo esc_attr($_POST['et_contact_subject']); else esc_attr_e('Subject','Nimble'); ?>" id="et_contact_subject" class="input" />
    </p>
    </div> <!-- #et_contact_left -->

    <div id="et_contact_right">
    <p class="clearfix">
    <?php
    esc_html_e('Captcha: ','Nimble');
    echo '<br/>';
    echo esc_attr($et_first_digit) . ' + ' . esc_attr($et_second_digit) . ' = ';
    ?>
    <input type="text" name="et_contact_captcha" value="<?php if ( isset($_POST['et_contact_captcha']) ) echo esc_attr($_POST['et_contact_captcha']); ?>" id="et_contact_captcha" class="input" size="2" />
    </p>
    </div> <!-- #et_contact_right -->

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

    <p class="clearfix">
    <label for="et_contact_message" class="et_contact_form_label"><?php esc_html_e('Message','Nimble'); ?></label>
    <textarea class="input" id="et_contact_message" name="et_contact_message"><?php if ( isset($_POST['et_contact_message']) ) echo esc_textarea($_POST['et_contact_message']); else echo esc_textarea( __('Message','Nimble') ); ?></textarea>
    </p>

    <input type="hidden" name="et_contactform_submit" value="et_contact_proccess" />

    <input type="reset" id="et_contact_reset" value="<?php esc_attr_e('Reset','Nimble'); ?>" />
    <input class="et_contact_submit" type="submit" value="<?php esc_attr_e('Submit','Nimble'); ?>" id="et_contact_submit" />

    <?php wp_nonce_field( 'et-contact-form-submit', '_wpnonce-et-contact-form-submitted' ); ?>
    </form>
    <?php } ?>
    </div> <!-- end #et-contact -->
    </div> <!-- end #left-area -->

    <?php if ( ! $fullwidth ) get_sidebar(); ?>
    </div> <!-- end #content-area -->
    </div> <!-- end .container -->
    </div> <!-- end #main-area -->

    <?php get_footer(); ?>
     
  2. LorK

    LorK Przyjaciel forum Beta-tester

    Wiadomości:
    1 002
    Docenione treści:
    88
  3. Daminaus31

    Daminaus31 Nowy użytkownik

    Wiadomości:
    4
    Docenione treści:
    0
    Mam zainstalowana wtyczkę smtp i test na niej działa, rozwiązanie które podałeś jest dla contact form 7 , którego nie używam.(contact form 7 by mi działał, ale go nie chcę). Używam oryginalnego formularza motywu i ten mi nie działa. Kod źródłowy w pierwszym poście.
     
  4. LorK

    LorK Przyjaciel forum Beta-tester

    Wiadomości:
    1 002
    Docenione treści:
    88
    Po SMTP to sprawdzisz w tym przypadku czy login i hasło są poprawne ;)
    Jakie parametry, po stronie admina, przyjmuje ten Twój formularz? Jakie wpisałeś tam wartości?
     
  5. Daminaus31

    Daminaus31 Nowy użytkownik

    Wiadomości:
    4
    Docenione treści:
    0
    Wtyczka od smtp działa bez problemu. Jak zainstalowałem sobie zamiast formularza oryginalnego z tematu wordpressa formularz contact form 7 to on działa bez problemu, Ale oryginalny z tematu wodpressa już nie. Wiem, że muszę dodać w kodzie formularza w polu "from", adres ze skrzynki powstałej na serwerze na której mam stronę ( u mnie to formularz@ homevision.pl). Problem jest taki, że nie znam php i nie wiem , w którym miejscu i jaki kod wpisać.
     
  6. LorK

    LorK Przyjaciel forum Beta-tester

    Wiadomości:
    1 002
    Docenione treści:
    88
    znaczy, że dane, które wpisałeś są poprawne :)

    PS. już to pisałeś.

    Widać, że jest IMHO nieco słabo napisana. Źródła do których dotarłem wskazują, że jej ostatni update był w 2014?

    pole FROM jest w tym kodzie ustawiane.

    to znaczy, że rozwiązanie z modyfikacją kodu nie jest dla Ciebie, bo:
    1) po aktualizacji problem pewnie powróci
    2) jeśli nie wiesz co robisz - nie rób tego

    Rozwiązanie jest dla WP i będzie nadpisywać nagłówki, nawet te z Twojego rozwiązania. Spróbuj - może Ci pomoże. Będzie to jako punkt wyjścia ;)



    Nie podałeś nawet nazwy theme, którego wątek dotyczy. Jak mamy Ci pomóc?

    ja bym sprawdził:
    1) co zwraca <?php echo "Naglowki: " . $headers; ?> przed wywołaniem wp_mail()
    2) wykomentował: $headers .= 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>'; i sprawdził czy jest lepiej
    3) zamienił to $headers .= 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>';
    na $headers .= 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>' . "\r\n"; i sprawdził czy jest lepiej - to tak na szybko ;)
    4) poszukał w google, np.
    https://wordpress.org/support/topic/et_error_message-how-to-locate-and-modify-this-var/
    5) napisał do producenta wtyczki?
    6) spróbował debugować ale skoro nie znasz PHP to to rozwiązanie nie jest raczej dla Ciebie



    PS. nie lubię Elegant Themes ;)
     
  7. Daminaus31

    Daminaus31 Nowy użytkownik

    Wiadomości:
    4
    Docenione treści:
    0
    Dziękuje bardzo za pomoc. Sprawa rozwiązana. Okazało się, że trzeba
    $headers .= 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>';
    na $headers = 'Reply-To: ' . $contact_name . ' <' . $contact_email . '>';
    czyli usunąć kropkę przy headers i działa. To był temat nimble, ale w elegant themes w każdej skórce jest ten problem.
    pozdrawiam
     
  8. LorK

    LorK Przyjaciel forum Beta-tester

    Wiadomości:
    1 002
    Docenione treści:
    88
    Pamiętaj tylko, że po aktualizacji problem zapewne powróci.
     
    Mariusz lubi to.

Poleć forum znajomym