Как отправить HTML содержимое в теле сообщения, используя контактную форму 7? - PullRequest
0 голосов
/ 08 апреля 2020

I want to send HTML content using contact form 7, but HTML code is not work direct send HTML tag in email. so how can I send this type of message using the hook or any way ?

Я хочу отправить HTML контент, используя контактную форму 7, но код HTML не работает, прямая отправка тега HTML по электронной почте. Итак, как я могу отправить этот тип сообщения с помощью ловушки или любым другим способом?

Я использую ловушку "wpcf7_posted_data", чтобы добавить мой дополнительный тег HTML в основной текст. Я хочу отправить дополнительные данные в формате HTML перед отправкой электронного письма.

function action_wpcf7_posted_data( $array ) {
    $html .= '<table>';
    $html .='<tr><td>'.$product->get_Name().'</td></tr>';
    $html .='<tr><td>'.$display.'</td></tr>';
    $html .='<tr><td>Qty : '.$ProductQty.'</td></tr>';
    $html .= '</table>';
    $value = $array['message'];
    if( !empty( $value ) ){       
        $array['message'] = $value."<br><br>".$html;
    }
    return $array;
}
add_filter( 'wpcf7_posted_data', 'action_wpcf7_posted_data', 10, 1 );

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Если вы пытаетесь добавить данные в форму обратной связи 7 по электронной почте HTML. Код ниже сделает это. Однако, похоже, что вы используете некоторые другие переменные, которые я не был уверен, откуда вы их взяли. Все представленные поля формы будут в $posted_data в моей функции ниже. Вы можете запустить процесс на наличие поля или просто запускать его каждый раз. Вы также можете использовать global $product и получить переменные для заполнения таблицы.

add_action( 'wpcf7_before_send_mail', 'he_append_to_email_body' );
function he_append_to_email_body( $contact_form ) {

    $submission = WPCF7_Submission::get_instance();
        if ( $submission ) {
            $posted_data = $submission->get_posted_data();    
    }

    if (isset($posted_data['the_field_you_want_to_trigger_this'])) { // Check that your field is present in your form.
        /**
         * ToDo:
         * Get your product and display and other variables here to put into the table.
         */
        $html = '<table>';
        $html .='<tr><td>'.$product->get_Name().'</td></tr>';
        $html .='<tr><td>'.$display.'</td></tr>';
        $html .='<tr><td>Qty : '.$ProductQty.'</td></tr>';
        $html .= '</table>';
        // Get the existing output from the CF7 email
        $mail = $contact_form->prop( 'mail' );
        // Append your data after the existing
        $mail['body'] .= $html;
        // Update the mail 
        $contact_form->set_properties(array('mail' => $mail));
    }
    return;
}
0 голосов
/ 08 апреля 2020

Вам не нужно, чтобы ваш пользователь сам вставлял HTML в форму. Поэтому вам нужно установить макет для отправленного сообщения в форме самой вкладки «Почта» и установить флажок «Использовать HTML тип содержимого» под полем «Текст сообщения».

Вам разрешено составлять HTML, но имейте в виду, что почтовые протоколы и клиенты не читают все теги HTML или даже все CSS. Проверьте эту ссылку, чтобы узнать, как создать HTML тело сообщения электронной почты: https://www.campaignmonitor.com/dev-resources/guides/coding-html-emails/ И это разрешено CSS: https://www.campaignmonitor.com/css/

Вы также можете отправить форму на другой адрес электронной почты, отметьте «Использовать почту (2)» - это дополнительный почтовый шаблон, часто используемый в качестве автоответчика ».

Проверьте контактную форму 7 Документация: https://contactform7.com/setting-up-mail/

С уважением. H

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