将wp_mail与附件一起使用,但未收到附件


15

我一直在研究包括示例在内的多个示例。

我没有收到电子邮件的问题,但是没有附件。我是否缺少文件类型的内容/类型?我看过的所有示例都只使用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' . "\r\n";
$headers .= 'Content-type: multipart/mixed; charset=iso-8859-1' . "\r\n";

$headers .= 'From: ' . $name . ' <' . $from . '>' . "\r\n";   
$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';
}

您能否发布一些有关您尝试过的代码?
Stephen Harris

您好Stephen,刚刚用代码更新了帖子。谢谢!
tbm 2012年

Answers:


27

$attachment用于参数wp_mail需要一个文件(或文件的阵列) -但是该文件路径必须被完全指定。例如:

<?php
   $attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');
   $headers = 'From: My Name <myname@mydomain.com>' . "\r\n";
   wp_mail('test@test.com', 'subject', 'message', $headers, $attachments);
?>

请参阅Codex)。看来您$_POST['file']可能未指定完整路径。

附件必须包含文件路径,而不是URL。以下为我工作:

$to = $_POST['to'];
$from = $_POST['from']; 
$name = get_bloginfo('name');

$headers = 'From: My Name <myname@mydomain.com>' . "\r\n";

$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属性。我不能完全确定您的示例正在尝试执行的操作,但这意味着在某些电子邮件客户端上看不到电子邮件消息。


谢谢Stephen的跟进...好的$_Post['file'],实际上是该文件的URL,我已经确认该URL是正确的。可以接受吗?
tbm 2012年

否,请参阅更新的答案:)
Stephen Harris

这意味着我不能让他们发送在其他地方(例如Amazon S3)托管的附件?我以前很怕那个。我只是想让人们选择直接从网页通过电子邮件将PDF发送到Kindle。无论如何,我稍后会再尝试并报告。
tbm 2012年

您可以读取远程文件,然后附加它?这里有一个例子。确切地讲,如何做/最佳实践将是SO的一个问题。
史蒂芬·哈里斯

非常感谢Stephen,我尝试了您的解决方案,它确实起作用了。现在...我必须弄清楚如何发送在其他地方托管的附件。感谢指针在哪里看!
tbm 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.