如何使用联系表格 7 在邮件正文中发送 HTML 内容?

Posted

技术标签:

【中文标题】如何使用联系表格 7 在邮件正文中发送 HTML 内容?【英文标题】:How to send HTML content in message body using contact form 7? 【发布时间】:2020-07-20 17:28:20 【问题描述】:

我想使用联系表格 7 发送 html 内容,但 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 );

【问题讨论】:

你到底想要什么?
Testing
此数据以 HTML 格式而不是 HTML 标记以电子邮件形式发送。
表示表单提交后要在邮件中发送HTML? 是的,我想要这样。 检查我的答案。 【参考方案1】:

如果您尝试将数据附加到 Contact Form 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;

【讨论】:

【参考方案2】:

您不需要用户自己在表单中插入 HTML。因此,您需要在 MAIL TAB 表单中设置已发送消息的布局,并检查消息正文字段下方的“使用 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

【讨论】:

感谢您的回复,但实际上我使用钩子“wpcf7_posted_data”在正文中附加我的额外 HTML 标记。 我觉得每次我在这篇文章中你都在改变你的问题! 也许您应该使用 google 进行更好的研究。您可以使用隐藏字段插件。

以上是关于如何使用联系表格 7 在邮件正文中发送 HTML 内容?的主要内容,如果未能解决你的问题,请参考以下文章

联系表格 7 插件电子邮件正文自动删除

发送电子邮件前打印一些数据(联系表格7)

如何自动填写联系表格 7

如何使用 css 在电子邮件正文中发送网页

Kettle发送邮箱并在正文中以表格形式展示内容[基础版]

Wordpress - 联系表格 7 - 卡住发送联系表格