2016-12-09 1 views
2

Dies ist per E-Mail, wie ich pdf SeiteYii2 - PDF generieren on the fly und befestigen

public function actionPdf(){ 
    Yii::$app->response->format = 'pdf'; 
    $this->layout = '//print'; 
    return $this->render('myview', []); 
} 

erzeugen kann, und das ist, wie ich E-Mails senden

$send = Yii::$app->mailer->compose('mytemplate',[]) 
    ->setFrom(Yii::$app->params['adminEmail']) 
    ->setTo($email) 
    ->setSubject($subject) 
    ->send(); 

Wie ich pdf als generieren Datei und fügen Sie sie an meine E-Mails im laufenden Betrieb an?

Antwort

5

Mailer haben Methode namens attachContent(), wo Sie PDF-Datei einfügen können.

Die PDF-Datei sollte mit dem Ausgabeziel als Zeichenfolge gerendert werden und dann als Parameter an attachContent() übergeben werden.

Probe:

Yii::$app->mail->compose() 
    ->attachContent($pathToPdfFile, [ 
     'fileName' => 'Name of your pdf', 
     'contentType' => 'application/pdf' 
    ]) 
    // to & subject & content of message 
    ->send(); 
+0

Gute Antwort, wäre noch besser, mit einem Codebeispiel. – user3574492

+1

@ user3574492 hier gehen Sie;) – Yupik

+0

sollte es nicht attach() anstelle von attachContent() sein, wenn es Pfad zur Datei ist? – tiacocstoe

1

Dies ist, wie ich es tat

In meinem Controller:

$mpdf=new mPDF(); 
$mpdf->WriteHTML($this->renderPartial('pdf',['model' => $model])); //pdf is a name of view file responsible for this pdf document 
$path = $mpdf->Output('', 'S'); 

Yii::$app->mail->compose() 
->attachContent($path, ['fileName' => 'Invoice #'.$model->number.'.pdf', 'contentType' => 'application/pdf'])