基本信息
您可以使用
wp_mail()
:
wp_mail( $to, $subject, $message, $headers, $attachments )
$to
可以是多个收件人的字符串或数组。任何符合RFC 2822的地址都可以使用,因此您可以包括真实姓名和电子邮件地址。
$subject
&;$message
是字符串,$message可以是HTML字符串。
或者,$headers
可以是字符串或其他电子邮件标题的数组,以及$attachments
可以是要附加的文件数组。
HTML电子邮件
如果您对内容使用HTML,那么在发送电子邮件之前,您可以向过滤器添加一个简单的功能,该功能将为您正确设置mime类型:
function wpse306737_set_html_content_type($content_type){
return \'text/html\';
}
add_filter( \'wp_mail_content_type\', \'wpse306737_set_html_content_type\' );
发送电子邮件后,最好再次删除此过滤器,以免影响以后在WP代码运行中发送的任何电子邮件:
remove_filter( \'wp_mail_content_type\', \'wpse306737_set_html_content_type\' );
默认情况下,发件人地址电子邮件来自wordpress@sitename.您可以使用筛选器更改此设置:
add_filter( \'wp_mail_from\', \'wpse306737_mail_from\' );
add_filter( \'wp_mail_from_name\', \'wpse306737_mail_from_name\' );
function wpse306737_mail_from() {
return \'[email protected]\';
}
function wpse306737_mail_from_name() {
return \'John Smith\';
}
如果愿意,也可以设置标题,
$headers[] = \'From: John Smith <[email protected]>\';
但WP过滤器似乎更符合WP的方式。
其他标题
$headers[] = \'Cc: The Shop <[email protected]>\';
$headers[] = \'Bcc: Jane Jones <[email protected]>\';
构建消息消息消息只是一个字符串,所以要连接纯文本、HTML和WP中的任何数据。如果我们使用的是post meta字段,并且处于循环中,那么:
$message = \'\';
$custom_fields = get_post_custom();
$message .= \'You have \' . $custom_fields[\'X\'] . \' credits remaining to fulfill \' . $custom_fields[\'Y\'] . \'.\';
$message .= \'Your deadline is \' . $custom_fields[\'Z\'] . \'.\';
关于元数据检索的一点注记
get_post_custom()
在循环中返回当前帖子的所有自定义字段。您可以使用post ID调用它,以获取特定post的元数据:
get_post_custom(3)
例如
get_post_custom()
将返回一个包含所有post meta的数组,其中一些可能已序列化,一些可能在数组中,因此您可能会发现使用多个调用get_post_meta()
这将允许您通过元键获取数据,并指定它是单个值还是多个值:get_post_meta( 3, \'total_points\', true )
将为带有键的元字段返回单个值total_points
附在ID为3的帖子上。
您没有说明要使用的数据是如何存储的,但有用于检索用户元、术语元和注释元的等效函数。get_user_meta()
, get_term_meta()
&;get_comment_meta()
所有工作方式与get_post_meta()
.
事实上,如果您查看源代码,只要有一个数据库表,WP就会很高兴地返回任何元数据,因此如果您的表有合适的名称,您甚至可以使用内置函数并利用WordPress元缓存来创建自己的数据库表。这个get_{type}_meta()
我提到的所有调用函数get_metadata()
. 使命感get_metadata( \'thing\', 3 )
将检查名为thingmeta
并将使用它检索元数据。get_metadata()
还有一个过滤器get_{$meta_type}_metadata
以缩短此数据库查找,从而允许您替换所需的任何数据源。
通过发送邮件,您可以获得:
add_filter( \'wp_mail_from\', \'wpse306737_mail_from\' );
add_filter( \'wp_mail_from_name\', \'wpse306737_mail_from_name\' );
function wpse306737_mail_from() {
return \'[email protected]\';
}
function wpse306737_mail_from_name() {
return \'John Smith\';
}
$headers = array(); // let\'s be safe
$headers[] = \'Cc: The Shop <[email protected]>\';
$headers[] = \'Bcc: Jane Jones <[email protected]>\';
$message = \'\';
$custom_fields = get_post_custom();
$message .= \'<p>You have \' . $custom_fields[\'X\'] . \' credits remaining to fulfill \' . $custom_fields[\'Y\'] . \'.</p>\';
$message .= \'<p><strong>Your deadline is \' . $custom_fields[\'Z\'] . \'.</strong></p>\';
$to = \'Site User <[email protected]>\';
$subject = \'Meet your deadline!\';
function wpse306737_set_html_content_type($content_type){
return \'text/html\';
}
add_filter( \'wp_mail_content_type\', \'set_html_content_type\' );
wp_mail( $to, $subject, $message, $headers );
remove_filter( \'wp_mail_content_type\', \'set_html_content_type\' );
发送大量电子邮件您可能希望通过有效的SMTP帐户或事务性电子邮件服务发送电子邮件,以保持服务器的声誉并提高可交付性,这样您就可以利用SPF、DKIM和DMARC。