вложение почты wp не работает


Здравствуйте, я пытаюсь отправить почту с некоторым вложением, используя функциональность 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 );
?>

Спасибо.

Author: fuxia, 2014-04-29

3 answers

Вложения всегда должны использовать абсолютный путь к файловой системе.

Также для изменения 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 применялся только к этому электронному письму.

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

 6
Author: A.Jesin, 2014-04-29 18:54:32

Лучше использовать get_home_path(); - Документация WordPress

$attachments = array( get_home_path() . '/wp-content/themes/your-theme/uploads/sample_photo_01.jpg');

Это возвращает абсолютный путь файловой системы к корню установки WordPress, все, что вам нужно сделать, это перейти туда, где находится ваше изображение/файл.

 1
Author: bstone, 2019-10-04 07:09:22

Вы можете попробовать этот код

  $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

 0
Author: Maidul, 2014-04-29 18:08:05