Einer der häufigeren Verstöße gegen die Regeln zum Aufbaus eines Mailes ist es auch, nach dem base64-kodieren die Zeilenumbrüche zu vergessen (oder hierbei wordwrap/chunk_spit() falsch anzuwenden)
<?php
$pdfOriginal = '/tmp/test.pdf';
$pdfBase64 = '/tmp/test.pdf.base64';
$imapDecoded = '/tmp/test.imap.pdf';
$base64Decoded = '/tmp/test.base64decoded.pdf';
$base64 = chunk_split( base64_encode( file_get_contents( $pdfOriginal ) ) );
file_put_contents( $pdfBase64, $base64 );
file_put_contents( $base64Decoded, base64_decode( $base64 ) );
file_put_contents( $imapDecoded, imap_base64( $base64 ) );
echo `ls -l $pdfOriginal $pdfBase64 $imapDecoded $base64Decoded`;