2012-01-17 6 views
1

저는 TCPDF 라이브러리를 사용하여 즉석에서 PDF (bill)를 생성하고 이메일을 통해 보내고 있습니다. 그것은 모두 작동하지만 이상한 문제가 있습니다. 내가 Gmail 계정에 전자 메일을 보내면 모든 것이 잘되지만, 내 메일 서버로 보낼 때 나는 pdf로 이메일을 받지만 열 때 메시지가 나타나지 않는다. "Adobe Reader가 열리지 않았다. file.pdf는 지원되는 형식이 아니거나 파일이 손상 되었기 때문에 발생합니다. " (이메일의 pdf는 비어 있습니다).TCPDF를 사용하여 즉석에서 PDF를 생성합니다.

$attachment = $pdf->Output("mypdf.pdf","E"); 
$attachment = chunk_split($attachment); 

및과 같이 이메일을 통해 보내 :

나는과 같이 문자열로 PDF를 저장할 내가 PHP 메일 기능을 가진 전자 우편을 보내고있다

$header .= "--".$separator.$eol; 
$header .= "Content-Type: application/pdf; name='mypdf.pdf'".$eol; 
$header .= "Content-Transfer-Encoding: base64".$eol; 
$header .= "Content-Disposition= attachment".$eol.$eol; 
$header .= $attachment; 

합니다.

$ 첨부 = $ PDF-> 출력 ("mypdf.pdf" "D"); 난과 같이, PDF 파일의 다운로드를 강제하는 경우

재미있는 것은입니다

파일이 정상적으로 작동하며 아무 문제없이 열립니다! 하지만 "E"로 다시 변경하면 작동하지 않습니다.

다른 이상한 일은 문제없이 pdf 파일을 열 수 있지만 다음 번에는 작동하지 않을 수도 있습니다 (정확한 이메일을 보내더라도).

어떤 일이 벌어지고 있는지 알 수 있습니까? pdf를 로컬 서버에 저장하지 않으려합니다.

+0

'$ attachement'를 인코딩 했습니까? – DerVO

+0

$ pdf-> 출력 ("mypdf.pdf", "E"); base64 인코딩 된 문자열을 반환합니다. 나도 나 자신을 인코딩하려고했지만 작동하지 않았다. – blejzz

답변

0

왜 PDF 파일을 저장하지 않습니까? "F" 매개 변수로 저장할 수 있습니다. 메일을 보낸 후에는

+0

파일이 지워지는 경우 파일을 쓰는 지점이 표시되지 않습니다. 이 옵션을 최후의 수단으로 사용하고 있습니다. – blejzz

+0

나는 너와 똑같은 일을 전에했다. 나는 ($ mail-> send() == true) {unlink ("file path"); } 작동합니다. –

+0

나는 그것이 작동하지만 파일을 만드는 것을 피하고 싶습니다. – blejzz

0

나는 몇 가지 사소한 결함을 참조 unlink 기능을 삭제할 수 있습니다

  • Content-Disposition=이어야 Content-Disposition:
  • 당신은 "--".$separator."--"

와 첨부 파일을 종료해야 난 이 문제가 해결되면 확실하지 않습니다. 어쨌든 모든 헤더를 수동으로 만드는 것은 매우 복잡하다고 생각합니다. 나는이 작업을 위해 PEARs Mail_Mime을 수년간 사용하고 있으며 여러분은 많은 간단한 솔루션을 사용할 준비가되어 있습니다.

관련 문제