代码之家  ›  专栏  ›  技术社区  ›  mpsbhat

在wp-mail中将datauri字符串作为附件发送

  •  0
  • mpsbhat  · 技术社区  · 6 年前

    我们有一个dataurl pdf文件,我们正在尝试转换它并作为附件发送 wp_mail() 作为,

    $str = "data:application/pdf;base64,JVBERi0xLjMKJf////8KNSAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDEgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yOCA4NDEuODldCi9Db250ZW50cyAzIDAgUgovUmVzb3VyY2VzIDQgMCBSCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQovRm9udCA8PAovRjEgNiAwIFIKPj4KPj4KZW5kb2JqCjcgMCBvYmoKPDwKL1Byb2R1Y2VyIChwZGZtYWtlKQovQ3JlYXRvciAocGRmbWFrZSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDE4MDcwODA1MTE0OVopCj4+CmVuZG9iago5IDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL0lCV0dRQStSb2JvdG8tUmVndWxhcgovRmxhZ3MgNAovRm9udEJCb3ggWy03MzYuODE2NDA2IC0yNzAuOTk2MDk0IDExNDguNDM3NSAxMDU2LjE1MjM0NF0KL0l0YWxpY0FuZ2xlIDAKL0FzY2VudCA5MjcuNzM0Mzc1Ci9EZXNjZW50IC0yNDQuMTQwNjI1Ci9DYXBIZWlnaHQgNzEwLjkzNzUKL1hIZWlnaHQgNTI4LjMyMDMxMwovU3RlbVYgMAovRm9udEZpbGUyIDggMCBSCj4+CmVuZG9iagoxMCAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9CYXNlRm9udCAvSUJXR1FBK1JvYm90by1SZWd1bGFyCi9DSURTeXN0ZW1JbmZvIDw8Ci9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRlbnRpdHkpCi9TdXBwbGVtZW50IDAKPj4KL0ZvbnREZXNjcmlwdG9yIDkgMCBSCi9XIFswIFs5MDggNzEyLjg5MDYyNSA1MjkuNzg1MTU2IDI0Mi42NzU3ODEgNTcwLjMxMjUgMjU3LjMyNDIxOV1dCj4+CmVuZG9iago2IDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0lCV0dRQStSb2JvdG8tUmVndWxhcgovRW5j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"; 
    $str =  explode(',', $str)[1];
    $pdf = base64_decode($str);
    $eol = PHP_EOL;
    $uid = md5(uniqid(time()));
    $to = 'toemail';
    $attachment_content = chunk_split($pdf);
    
    ////Email content
    $headers[] = 'Content-Type: text/html; charset=UTF-8';
    $email_body = "--" . $uid . $eol;
    $email_body .= "Content-Transfer-Encoding: 7bit" . $eol;
    $email_body .= "Test Mail" . $eol;
    
    ////Attachment
    $email_body .= "--" . $uid . $eol;
    $email_body .= "Content-Type: application/pdf; name=\"test.pdf\"" . $eol;
    $email_body .= "Content-Transfer-Encoding: base64" . $eol;
    $email_body .= "Content-Disposition: attachment; filename=\"test.pdf\"" . $eol. $eol;
    $email_body .= $attachment_content . $eol;
    $email_body .= "--" . $uid . $eol;
    
    wp_mail($to, "Test Email", $email_body, $headers);
    

    但电子邮件只提供字符串。这里怎么了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   user141080    6 年前

    Sending multipart (text/html) emails via wp_mail() will likely get your domain banned wp_mail() sets Content-Type header twice for multipart emails

    bonger

    https://wordpress.stackexchange.com/a/191974

    elseif ( is_array($message) ) {
    
        foreach ($message as $type => $body) 
        {    
            if ($type === 'text/html') {
                $phpmailer->Body = $body;
            }
            elseif ($type === 'text/plain') {
                $phpmailer->AltBody = $body;
            }
            elseif ( $type === 'base64')
            {   
                $phpmailer->addStringAttachment( $body['content'], $body['name'] );
            }
            else 
            {
                $phpmailer->AddAttachment($body, '', 'base64', $type);
            }
        }
    }
    

    function my_test_func()
    {
    $to = "test@gmail.com";
    
    $subject = 'wp_mail testing multipart';
    
    // your pdf as base64
    $str = "data:application/pdf;base64,JVBERi0xLjMKJf////8KNSAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDEgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yOCA4NDEuODldCi9Db250ZW50cyAzIDAgUgovUmVzb3VyY2VzIDQgMCBSCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQovRm9udCA8PAovRjEgNiAwIFIKPj4KPj4KZW5kb2JqCjcgMCBvYmoKPDwKL1Byb2R1Y2VyIChwZGZtYWtlKQovQ3JlYXRvciAocGRmbWFrZSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDE4MDcwODA1MTE0OVopCj4+CmVuZG9iago5IDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL0lCV0dRQStSb2JvdG8tUmVndWxhcgovRmxhZ3MgNAovRm9udEJCb3ggWy03MzYuODE2NDA2IC0yNzAuOTk2MDk0IDExNDguNDM3NSAxMDU2LjE1MjM0NF0KL0l0YWxpY0FuZ2xlIDAKL0FzY2VudCA5MjcuNzM0Mzc1Ci9EZXNjZW50IC0yNDQuMTQwNjI1Ci9DYXBIZWlnaHQgNzEwLjkzNzUKL1hIZWlnaHQgNTI4LjMyMDMxMwovU3RlbVYgMAovRm9udEZpbGUyIDggMCBSCj4+CmVuZG9iagoxMCAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9CYXNlRm9udCAvSUJXR1FBK1JvYm90by1SZWd1bGFyCi9DSURTeXN0ZW1JbmZvIDw8Ci9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRlbnRpdHkpCi9TdXBwbGVtZW50IDAKPj4KL0ZvbnREZXNjcmlwdG9yIDkgMCBSCi9XIFswIFs5MDggNzEyLjg5MDYyNSA1MjkuNzg1MTU2IDI0Mi42NzU3ODEgNTcwLjMxMjUgMjU3LjMyNDIxOV1dCj4+CmVuZG9iago2IDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0lCV0dRQStSb2JvdG8tUmVndWxhcgovRW5j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"; 
    $str =  explode(',', $str)[1];
    
    $message['text/plain'] = 'Hello world! This is plain text...';
    
    $message['base64'] = array('content' => base64_decode($str), 'name' => 'test.pdf');
    
    $message['text/html'] = '<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    
    <p>Hello World! This is HTML...</p> 
    
    </body>
    </html>';
    
    // send email
    wp_mail( $to, $subject, $message );
    }
    
    add_action('init', 'my_test_func');
    

    Multipurpose Internet Mail Extensions - Wikipedia

    Send PHP HTML mail with attachments - Stackoverflow