如何发送带附件的wp_mail(变量中的文件路径)

时间:2016-03-23 10:11:14

标签: php wordpress

我想使用wordpress发送带附件的电子邮件' wp_mail函数。

使用此功能可以正常发送电子邮件,但在查看我的电子邮件时,附件并不存在。

function dd_send_email(){

    $dd_path = $_POST['upload_image'];
    // echo $dd_path;

    $email_sent = false;

    // get email template data
    $email_template_object = dd_get_current_options();


    // if email template data was found
    if ( !empty( $email_template_object ) ):

        // setup wp_mail headers
        $wp_mail_headers = array('Content-Type: text/html; charset=UTF-8');
        $mail_attachment = $dd_path; 

        // use up_mail to send email
        $email_sent = wp_mail( array( 'example@mail.no') , $email_template_object['dd_emne_forhaandsbestilling'], $email_template_object['dd_email_text_forhaandsbestilling'], $wp_mail_headers, $mail_attachment );

    endif;

    return $email_sent;

}

变量$dd_path(类似于:http://localhost/norskeanalyser/wp-content/uploads/Testanalyse-2.pdf)包含我从另一个函数中的媒体上传器上传的文件的路径。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。因为wp_mail需要像/uploads/2016/03/example.jpg那样的文件路径,所以我们必须将我们的url转换为这样的路径。

我通过以下方式实现了这一目标,并认为我可以与您分享:

    // change url to path   
    $dd_url = $_POST['upload_image'];
    $dd_path = parse_url($dd_url);

    // cut the path to right directory
    $array = explode("/norskeanalyser/wp-content", $dd_path['path']);
    unset($array[0]);
    $text = implode("/", $array);

然后我将$text保存到$mail_attachment并在wp_mail中调用它,如上所述。