PHP ile dinamik olarak oluşturulan PDF e-postayla gönderme

0 Cevap php

Geçenlerde sitemizde için iş ilanları oluşturmak için online bir şablon oluşturduk. Her şey bir tarayıcıda düzgün biçimlendiren yapılır, otomatik olarak sitemize nakleder, bla bla bla.

Ben yaratıyorum son parçası yöneticiye tutarlı, uygun bir şekilde (e-posta yoluyla) çeşitli yerlere ilanı dağıtmak için birkaç seçenek vermektir. Ben TCPDF kütüphanesini kullanarak, anında bir PDF dokümanı oluşturan bir PHP sayfası oluşturduk. Pdf.php yüklerken? Id = X, sayfa Bu sadece anında deniyor her zaman onu oluştururken, sunucuya PDF dosyasını kaydederken asla değilim demektir iş ilanıyla X'in içeriği ile bir PDF görüntüler.

Ama bir e-posta için bu PDF eklemek, ve ben e-pdf.php? Id = x eklerseniz vb çeşitli kolej ve iç e-posta listeleri, göndermek istiyorsanız, bu PDF takmak değil, bu ekler ne yukarıda adı ile, boş bir dosya gibi görünüyor.

Bu sunucuya kaydetmeden e-posta bu takmak mümkün mü?


Aşağıda daha fazla sorun giderme için JM4 yanıtına bağlı eklendi. Ben bir işlev içine PDF dosya oluşturma koymak ve sadece yönetmek daha kolay şeyleri tutmak için, bir içerme dosyası içine koyduk.

// random hash necessary to send mixed content
$separator = md5(time());

$eol = PHP_EOL;

// attachment name
$filename = "_Desiredfilename.pdf";

include_once('pdf.php');
// encode data (puts attachment in proper format)
$pdfdoc = job_posting_to_pdf($posting_id);
$attachment = chunk_split(base64_encode($pdfdoc));

///////////HEADERS INFORMATION////////////
// main header (multipart mandatory) message
$headers  = "From: Sender_Name<valid_email@mydomain.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
if(mail('valid_email@mydomain.com', 'test job posting', 'message body goes here', $headers)) {
    echo 'mail sent';
} else {
    echo 'error in email';
}

İşte pdf.php bir aşağı elimden sürümü:

function job_posting_to_pdf($job_id) {
    require_once(ROOT . 'assets/libs/tcpdf/config/lang/eng.php');
    require_once(ROOT . 'assets/libs/tcpdf/tcpdf.php');
    // create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('');
    $pdf->SetTitle('OPL Job Posting');
    $pdf->SetSubject('Job Posting');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

    // remove default header/footer
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);

    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //set margins
    $pdf->SetMargins(11, PDF_MARGIN_TOP, 11);

    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 

    //set some language-dependent strings
    $pdf->setLanguageArray($l); 

    // ---------------------------------------------------------

    $pdf->SetFont('times', 'I', 9);
    $pdf->AddPage();

    $left_cell_width = 60;
    $row_height = 6;

    $pdf->Image(ROOT . 'assets/gfx/logos/OPL-Logo.jpg', 0, 5, null, 16, null, null, 'N', false, null,'R');
    $pdf->Ln('3');

    if(!$row['internal']) {
        $pdf->Cell(0,0,'This position will be posted internally and externally, concurrently.',0,2,'C');
    } else {
        $pdf->Cell(0,0,'Internal posting only.',0,2,'C');
    }

    //Remainder of actual PDF creation removed to keep things simple


    return $pdf->Output("", "S");
}

0 Cevap