钩入和发送邮件使用WP邮件SMTP类型插件从HTML静态首页?

时间:2019-08-28 作者:ClintonGallagher

我在WordPress网站上将HTML引导页面重用为静态首页。首页有一个表单,我想将其用作“联系我”表单。我安装了广泛使用的WP Mail SMTP插件,它使用管理测试过程发送邮件。令人惊讶的是,该插件的免费版本甚至发送到了Microsoft Office365 live。com地址。

我想学习如何(如果可能的话)使用SMTP插件从静态页面中的HTML表单发送邮件。

我在发帖前阅读这里的问题时发现了这些页面,并发现它们很有见解,但它们并不意味着与插件挂钩:

https://www.sitepoint.com/handling-post-requests-the-wordpress-way/

https://codex.wordpress.org/Plugin_API/Action_Reference/admin_post_(action)

我以前使用过PHPMailer编码,但这样做会在需要使用SMTP处理事务性电子邮件时导致TARFU;尤其是Office365端点。这将是我的退路,如果我知道我将无法学习连接到插件来发送邮件。

我能不能这样做?如果可以,我该怎么做?

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

你让事情变得比需要的更复杂了。

WP Mail SMTP是一个插件,允许您拥有WPwp_mail() 函数通过SMTP帐户发送,而不依赖web服务器。

在这种情况下,您不会对WP Mail SMTP执行任何特定操作。你要做的是使用wp_mail() - 结果是通用的,所以无论您使用的是WP Mail SMTP、其他插件还是没有插件,都没有关系。一切都一样。

所以你真正需要知道的是如何使用wp_mail(), which is documented here. 由于您使用的是WP Mail SMTP,因此您通过wp_mail() 将通过插件中指定的帐户。

您的问题确实缺乏一些具体的细节,包括您具体在做什么(即您希望表单如何工作)以及您实际知道如何做(您知道PHP吗?我想您知道)。所以,我将回答你的问题,并假设你知道如何获得形式$_POST 结果以及如何为此处理PHP。

无论您将表单发布到何处,如果它是非WP页面,您都需要确保已加载WordPress才能使用wp_mail() 函数发送表单结果。因此,无论是原始页面本身还是另一个“thank\\u you”类型的页面,无论哪种方式,它都需要是PHP。

<?php
// Not loading WP templates...
define( \'WP_USE_THEMES\', false );

// Load WordPress Core (make sure the path is correct)
require_once( \'path/to/wp-load.php\' );

// Assume you know how to check if the form is posted, so this is generic...
if ( $_POST ) {

    $to = \'[email protected]\';

    $subject = \'Someone sent you a message!\';

    // Build the body based on your form...
    $name  = sanitize_text_field( $_POST[\'name\'] );
    $email = sanitize_email( $_POST[\'email\'] );
    $body  = sanitize_textarea( $_POST[\'message\'] );

    $message = "Someone filled out your form as follows: \\r\\n\\r\\n";
    $message.= "name: $name \\r\\n";
    $message.= "email: $email \\r\\rn";
    $message.= "the message: \\r\\n";
    $message.= $body;

    // Send the message...
    wp_mail( $to, $subject, $message );

}

相关推荐

WordPress nl2br在保存metabox值时不会将换行符转换为html换行符

我尝试了可能的解决方案\\n 像<br /> 从我的自定义帖子类型<textarea> metabox,但它不工作。我使用的是定制主题,没有安装其他插件。function abhijaan_itinerary_metabox( $post ) { wp_nonce_field( \'trek_itinerary\', \'trek_itinerary_nonce\' ); $content = get_post_meta( $post->ID,