附件pdf生成的TCPDF发送邮件与邮件PHP功能


Attach pdf generated with TCPDF sending mail with mail PHP function

我想发送一个使用邮件Php函数与TCPDF生成的pdf。

如果我像这样发送一个简单的邮件:mail('xxx@ne.es', 'My Subject', $message);

pdf生成良好,但当我想要附加pdf头不工作。

这是我的代码:

$pdfdoc=$pdf->Output('file.pdf', 'S');
 $separator = md5(time());
        $eol = PHP_EOL;
// Send
        $filename = "_Desiredfilename.pdf";
        // encode data (puts attachment in proper format)
        $attachment = chunk_split(base64_encode($pdfdoc));
        ///////////HEADERS INFORMATION////////////
        // main header (multipart mandatory) message
        $headers  = "From: Sender_Name<sender@domain.com>".$eol;
        $headers .= "Bcc: email@domain.com".$eol;
        $headers .= "MIME-Version: 1.0".$eol;
        $headers .= "Content-Type: multipart/mixed; boundary='"".$separator."'"".$eol.$eol;
        $headers .= "Content-Transfer-Encoding: 7bit".$eol;
        $headers .= "This is a MIME encoded message.".$eol.$eol;
        // message
        $headers .= "--".$separator.$eol;
        $headers .= "Content-Type: text/html; charset='"iso-8859-1'"".$eol;
        $headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
        $headers .= $message.$eol.$eol;
        // attachment
        $headers .= "--".$separator.$eol;
        $headers .= "Content-Type: application/octet-stream; name='"".$filename."'"".$eol;
        $headers .= "Content-Transfer-Encoding: base64".$eol;
        $headers .= "Content-Disposition: attachment".$eol.$eol;
        $headers .= $attachment.$eol.$eol;
        $headers .= "--".$separator."--";

        //Email message
        mail('xxx@gmail.com', 'prova', 'hola', $headers);

什么时候有问题?

感谢

我希望这对你也有用。我检查过了,效果很好。请尝尝。在此之前,请检查"php.ini"是否有邮件,并检查是否创建了pdf文件。

$pdfdoc=$pdf->Output('file.pdf', 'F');
        // Send
        $files = "file.pdf";

        ///////////HEADERS INFORMATION////////////
        // boundary
        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
        // headers for attachment
        $headers .= "'nMIME-Version: 1.0'n" . "Content-Type: multipart/mixed;'n" . " boundary='"{$mime_boundary}'"";
         // multipart boundary
        $message = "--{$mime_boundary}'n" . "Content-Type: text/plain; charset='"iso-8859-1'"'n" .
        "Content-Transfer-Encoding: 7bit'n'n" . $message . "'n'n";
        // preparing attachments
        $message .= "--{$mime_boundary}'n";
            $fp     = @fopen($files,"rb");
            $data   = @fread($fp,filesize($files));
                    @fclose($fp);
            $data = chunk_split(base64_encode($data));
            $message .= "Content-Type: application/octet-stream; name='"".basename($files)."'"'n" .
            "Content-Description: ".basename($files)."'n" .
            "Content-Disposition: attachment;'n" . " filename='"".basename($files)."'"; size=".filesize($files).";'n" .
            "Content-Transfer-Encoding: base64'n'n" . $data . "'n'n";
        $message .= "--{$mime_boundary}--";

        //Email message
        mail('xxx@gmail.com', 'prova', 'hola', $headers);

或包含此函数在您的代码中,使用此函数发送多附件文件。这个很好用。请试试这个

/* 
     * Function Name: sentMail
     * Scope        : Sent Mail Function with CC , BCC and Attachment files..
     * Input        : Recipient Name            => $recipientName   // (Required)
     *                Recipient MailId(Many)    => $recipientMailId // (Required & Array Format)
     *                Subject Content           => $subjectContent  // (Required)
     *                Message Content           => $messageContent  // (Required)
     *                Sender MailId             => $senderMailId    // (Required)
     *                Sender Name(Many)         => $senderName      // (Required)
     *                Recipient CC MailId       => $recipientCCMailId   //(Optional & Array Format)
     *                Recipient BCC MailId      => $recipientBCCMailId  //(Optional & Array Format)
     *                Attachment Files          => $attachmentFiles     //(Optional & Array Format)
     * Output       : Sent mail to the Recipient.
     */
    public function sentMail($recipientName,$recipientMailId,$subjectContent,$messageContent,$senderName,$senderMailId,$recipientCCMailId,$recipientBCCMailId,$attachmentFiles)
    {
        try 
        {
            /*Get the Mulitple Recipient CC MailId*/
            if(isset($recipientCCMailId)){
                if(count($recipientCCMailId)>1){
                    $recipientCCMailId = implode(',',$recipientCCMailId);
                }
                else{
                    $recipientCCMailId = $recipientCCMailId[0];
                }
            }
            /*Get the Mulitple Recipient BCC MailId*/
            if(isset($recipientBCCMailId)){
                if(count($recipientBCCMailId)>1){
                    $recipientBCCMailId = implode(',',$recipientBCCMailId);
                }
                else{
                    $recipientBCCMailId = $recipientBCCMailId[0];
                }
            }
            /*** Mail Contents Starts ***/
                $subj = $subjectContent;
                $msg ="";
                /*Get the Mulitple Recipient BCC MailId*/
                if(count($recipientMailId)>1){
                    $recipientMailId = implode(',',$recipientMailId);
                    $msg .="Dear, <b>All</b>'r <br>";
                }
                else{
                    $recipientMailId = $recipientMailId[0];
                    $msg .="Dear, <b>".ucwords($user_name)."</b> 'r <br>";
                }
                $msg .=$messageContent."'r <br><br>";
                $msg .="Thank you"."'r'n'n <br>";
                $msg .=$senderName."'r'n'n <br><br>";
                $headers ="";
                /** Get the Mulitple Attachment files and Attachment Process Starts **/
                if(isset($attachmentFiles)){
                    $headers .= "From: ".$senderMailId."'r'n";
                    $headers .= "Cc: ".$recipientCCMailId."'r'n";
                    $headers .= "Bcc: ".$recipientBCCMailId."'r'n";
                    // boundary
                    $semi_rand = md5(time());
                    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
                    // headers for attachment
                    $headers .= "'nMIME-Version: 1.0'n" . "Content-Type: multipart/mixed;'n" . " boundary='"{$mime_boundary}'"";
                     // multipart boundary
                    $msg .= "--{$mime_boundary}'n" . "Content-Type: text/plain; charset='"iso-8859-1'"'n" .
                    "Content-Transfer-Encoding: 7bit'n'n" . $msg . "'n'n";
                    // preparing attachments
                    for($i=0;$i<count($attachmentFiles);$i++)
                    {
                        if(is_file($attachmentFiles[$i]))
                        { 
                            $msg .= "--{$mime_boundary}'n";
                            $fp     = @fopen($attachmentFiles[$i],"rb");
                            $data   = @fread($fp,filesize($attachmentFiles[$i]));
                                      @fclose($fp);
                            $data   = chunk_split(base64_encode($data));
                            $msg .= "Content-Type: application/octet-stream; name='"".basename($attachmentFiles[$i])."'"'n" .
                            "Content-Description: ".basename($attachmentFiles[$i])."'n" .
                            "Content-Disposition: attachment;'n" . " filename='"".basename($attachmentFiles[$i])."'"; size=".filesize($attachmentFiles[$i]).";'n" .
                            "Content-Transfer-Encoding: base64'n'n" . $data . "'n'n";
                        }
                     }
                    $msg .= "--{$mime_boundary}--";
                }
                /** Attachment Process Ends **/
                else{
                    $headers .= "MIME-Version: 1.0" . "'r'n";
                    $headers .= "Content-type:text/html;charset=utf-8" . "'r'n";
                    //$headers .= "Content-type:text/html;charset=iso-8859-1" . "'r'n";
                    $headers .= "From: ".$senderMailId."'r'n";
                    $headers .= "Cc: ".$recipientCCMailId."'r'n";
                    $headers .= "Bcc: ".$recipientBCCMailId."'r'n";
                }
            /*** Mail Contents Ends ***/    
            $sent_mail=mail($recipientMailId,$subj,$msg,$headers); 
            if($sent_mail)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception $e)
        {
            getConnection('close');
            echo "Caught Exception:",$e->getMessage();
        } 
    }

并且您通过该参数编辑了该函数的DTD中指定的格式。

sentMail($recipientName,$recipientMailId,$subjectContent,$messageContent,$senderName,$senderMailId,$recipientCCMailId,$recipientBCCMailId,$attachmentFiles);

,

$recipientName = "sam";
$recipientMailId = array("xxx@gmail.com");
$subjectContent = "this is sample pdf attachment over email";
$messageContent = "this is sample pdf attachment over email";
$senderMailId   = "sender@gmail.com"
$senderName     = "sender";
$recipientCCMailId = array("xxx@gmail.com");
$recipientBCCMailId = array("xxx@gmail.com");
$attachmentFiles = array("filename.pdf");
sentMail($recipientName,$recipientMailId,$subjectContent,$messageContent,$senderName,$senderMailId,$recipientCCMailId,$recipientBCCMailId,$attachmentFiles);