zend_mailで添付ファイルを送信したいのですが、以下のようになり、受信側で受信したファイルが認識されません。
「ファイルを開けませんでした。ファイルが壊れているか、“プレビュー”が認識しないフォーマットである可能性があります。」
添付ファイルを正常に送れるようにするにはどうすればよいでしょうか?
This is a message in Mime Format. If you see this, your mail reader does not support this format.
--=_024b9094f645b465e6f5436611e3320f
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
test text
--=_024b9094f645b465e6f5436611e3320f
Content-Type: image/gif; name="hoge.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="hoge.gif"
UjBsR09EbGhMQUg2QU9ZQUFPN09zRkZTSzUxUUUyaVZOSG1vUmZ2Lzd2MkhNN2ZwN2N2djY0ZX
VUS3dJQmF1bG1lMzQ2UC9aQlpUZQ0KNzlmVXowNHVFdElhRmZPM2tKZHNXTk92a1BIV1dOcjM2
(略)
--=_024b9094f645b465e6f5436611e3320f--
私はphpは全くのど素人なので勘違いしてたらすみません。
ただ、プログラムロジックだけを見ると以下の箇所が明らかに間違えていると思われます。
$myImage = chunk_split(base64_decode($myImage));
元の$myImageには、ファイルから読み出してきたGIFファイルが入っているはずです。これはbase64でもなんでもないただのバイナリなので、base64_decode($myImage)というのは明らかに正しくありません。
ドキュメントを見る限り、$attachment->encodingを指定しておけば送信時に自動的にそのエンコーディングで符号化してくれるようですので、上の行はそもそもいらないと思います。(むしろ現状は存在することで不具合の元になっている)。ファイルから読み出してきた$myImageをそのままcreateAttachment()してやればよいはずです。
ありがとうございます。
> $attachment->encodingを指定しておけば送信時に自動的にそのエンコーディングで符号化してくれるようですので、上の行はそもそもいらないと思います。
おっしゃる通りでした。