问题描述
好的,我放弃了看过多个例子,包括 this one 。
我收到电子邮件没有问题,但没有附件。我是否缺少文件类型的内容/类型?我看过的所有例子只使用 text /html 作为内容类型。
这是我的 (加上斯蒂芬的要求)
if( isset( $_POST['to'] ) && isset( $_POST['from'] ) ) {
global $wpdb;
$to = $_POST['to'];
$from = $_POST['from'];
$name = get_bloginfo('name');
$attachment = $_POST['file'];
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: multipart/mixed; charset=iso-8859-1' . "rn";
$headers .= 'From: ' . $name . ' <' . $from . '>' . "rn";
$subject = 'Send to Kindle';
$msg = 'Yay! Your book has <a href="http://yahoo.com">arrived</a>';
$mail_attachment = array( $attachment );
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
echo 'Email sent';
} else {
echo 'Email not sent';
}
最佳解决方案
wp_mail
的 $attachment
参数获取文件 (或文件数组),但文件路径必须完全指定。例如:
<?php
$attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');
$headers = 'From: My Name <myname@mydomain.com>' . "rn";
wp_mail('test@test.com', 'subject', 'message', $headers, $attachments);
?>
(see Codex) 。看来你的 $_POST['file']
可能没有指定完整的路径。
附件必须具有文件路径,而不是 url 。以下为我工作:
$to = $_POST['to'];
$from = $_POST['from'];
$name = get_bloginfo('name');
$headers = 'From: My Name <myname@mydomain.com>' . "rn";
$subject = 'Send to Kindle';
$msg = 'Yay! Your book has <a href="http://yahoo.com">arrived</a>';
$mail_attachment = array(WP_CONTENT_DIR . '/uploads/2012/03/image.png');
wp_mail($to, $subject, $msg, $headers, $mail_attachment);
注意:我也改变了 headers
属性。我不完全确定你正在尝试的例子,但这意味着电子邮件的消息在一些电子邮件客户端上不可见。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。