我在电子邮件附加生成pdf时遇到了一些问题,希望您能给我一些建议,请帮助。
这是控制器:
public function kirim(Request $request){
$keluhan = keluhan::findOrFail($request->id);
$tindak = DB::table('tindakans')
->join('keluhans','keluhans.id','=','tindakans.id_keluhan')
->select(DB::raw('tindakans.id, id_keluhan, perbaikan_sementara, revisi_dokumen, target_verifikasi, ttd_tanggung1,
ttd_tanggung2'))->get();
$analisa = DB::table('analisas')
->join('tindakans','tindakans.id','=','analisas.id_tindakan')
->join('keluhans','keluhans.id','=','tindakans.id_keluhan')
->select(DB::raw('id_tindakan, analisa, tindakan, pic, tanggal_pelaksanaan'))->get();
$pdf = \PDF::loadView('laporan.ptkp',compact('keluhan','tindak','analisa','halaman'));
//return $pdf->stream();
$data = array(
'email_address'=>$request->email_address,
'cc'=>$request->cc,
'subject'=>$request->subject,
'keterangantambahan'=>$request->keterangantambahan
);
Mail::send('laporan.kirim', $data, function($message) use($data) {
$message->from('christian7andrew@gmail.com', 'PuraBox');
$message->to($data['email_address']);
if($data['cc'] != null){
$message->cc($data['cc']);
}
$message->subject($data['subject']);
$message->Attach($pdf);
});
return redirect('/');
}
如何附加$pdf
?
答案 0 :(得分:2)
您正在使用:
attach
要向电子邮件添加附件,请在传递给Closure的$ message对象上使用attach方法。 attach方法接受文件的完整路径作为其第一个参数:
您应该使用$message->attach($pathToFile);
方法(没有大写字母),并且在参数中,您需要传递pdf所在的路径,而不是生成的pdf。就像文档说的那样。
Mail::send('laporan.kirim', $data, function($message) use($data) {
$message->from('christian7andrew@gmail.com', 'PuraBox');
$message->to($data['email_address']);
if($data['cc'] != null){
$message->cc($data['cc']);
}
$message->subject($data['subject']);
//Full path with the pdf name
$message->attach('foo/bar/mypdfname.pdf');
});
最后,将会是这样的:
public static void insertText(String text, EditText editText)
{
int start = Math.max(editText.getSelectionStart(), 0);
int end = Math.max(editText.getSelectionEnd(), 0);
editText.getText().replace(Math.min(start, end), Math.max(start, end), text, 0, text.length());
try
{
editText.setSelection(start + 1);
}
catch (final IndexOutOfBoundsException e)
{
}
}
答案 1 :(得分:1)
我不知道您使用哪个库进行PDF生成,但我想应该有类似这样的API,
$pdf = \PDF::loadView('laporan.ptkp',compact('keluhan','tindak','analisa','halaman'));
$path = storage_path('app/public/pdf/')."example.pdf";
$pdf->save($path);
return $path;
然后您可以使用该路径附加到电子邮件。
希望这有帮助。
答案 2 :(得分:0)
也许您可以像
Mail::send('laporan.kirim', $data, function($message) use($data) {
$message->from('christian7andrew@gmail.com', 'PuraBox');
$message->to($data['email_address']);
if($data['cc'] != null){
$message->cc($data['cc']);
}
$message->subject($data['subject']);
$message->Attach($pdf->output(),"name.pdf");
});
return redirect('/');
}
这可能会帮助您
答案 3 :(得分:0)
自Laravel 5.1起,您可以使用attachData()
方法直接附加生成的文件,而无需保存。
来源 :
Manual - section Raw Data Attachments
attachData方法将原始数据字节作为第一个参数,将文件名作为第二个参数,并将选项数组作为第三个参数:
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.orders.shipped')
->attachData($this->pdf, 'name.pdf', [
'mime' => 'application/pdf',
]);
}