WP_mail附件不起作用

时间:2014-04-29 作者:Manan

您好,我正在尝试使用wordpress发送带有附件的邮件wp_mail 功能,但我的邮箱中没有附件。

你能帮我查一下下面的代码并告诉我哪里错了吗。您可以看到我正在附件中播种图像。

<?php
    $to  = \'[email protected]\';
    $subject = \'WordPress wp_mail\';
    $message = \'
    <html>
    <body>
        <table rules="all" style="border-color: #666;" cellpadding="10">
          <tr>Hello WordPress</tr>
        </table>          
    </body>
    </html>
    \';

    $attachments = array( \'http://sitename/project/wp-content/plugins/my-plugin/uploads/sample_photo_01.jpg\' );
    //$attachments = array(WP_CONTENT_DIR  . \'/uploads/\'.$_FILES["myfile"]["name"]);
    $headers[] = \'MIME-Version: 1.0\' . "\\r\\n";
    $headers[] = \'Content-type: text/html; charset=iso-8859-1\' . "\\r\\n";
    $headers[] = \'From: \'.get_option( \'blogname\' ).\' <\'.get_option( \'admin_email\' ).\'>\';

    wp_mail( $to, $subject, $message, $headers, $attachments );
?>
谢谢。

3 个回复
最合适的回答,由SO网友:A.Jesin 整理而成

附件应始终使用绝对文件系统路径。

还要更改Content-Type 您应该使用wp_mail_content_type 滤器

<?php
function my_custom_email() {
    $to  = \'[email protected]\';
    $subject = \'WordPress wp_mail\';
    $message = \'
    <html>
    <body>
        <table rules="all" style="border-color: #666;" cellpadding="10">
          <tr>Hello WordPress</tr>
        </table>          
    </body>
    </html>
    \';

    $attachments = array(  WP_PLUGIN_DIR . \'/my-plugin/uploads/sample_photo_01.jpg\' );
    $headers[] = \'From: \'.get_option( \'blogname\' ).\' <\'.get_option( \'admin_email\' ).\'>\';
    add_filter( \'wp_mail_content_type\', \'my_custom_email_content_type\' );
    return wp_mail( $to, $subject, $message, $headers, $attachments );
}

function my_custom_email_content_type() {
    return \'text/html\';
}
我将整个代码放在一个函数中,以便wp_mail_content_type 筛选器仅适用于此电子邮件。

来源:
http://codex.wordpress.org/Function_Reference/wp_mail
http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_mail_content_type

SO网友:bstone

更好地使用get_home_path(); - WordPress Documentation

$attachments = array( get_home_path() . \'/wp-content/themes/your-theme/uploads/sample_photo_01.jpg\');
这将获得WordPress安装根目录的绝对文件系统路径,您只需从那里导航到图像/文件所在的位置。

SO网友:Maidul

您可以尝试此代码

  $attachments = array( WP_CONTENT_DIR . \'/uploads/file_to_attach.zip\' );
   $headers = \'From: My Name <[email protected]>\' . "\\r\\n";
   wp_mail(\'[email protected]\', \'subject\', \'message\', $headers, $attachments );
我是从http://codex.wordpress.org/Function_Reference/wp_mail

结束