人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

再度質問させていただきます。http://q.hatena.ne.jp/1216002826#comment

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--

●質問者: uniom
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:base64 DOES GIF hoge ISO-2022-JP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ardarim
●60ポイント ベストアンサー

私はphpは全くのど素人なので勘違いしてたらすみません。

ただ、プログラムロジックだけを見ると以下の箇所が明らかに間違えていると思われます。

$myImage = chunk_split(base64_decode($myImage)); 

元の$myImageには、ファイルから読み出してきたGIFファイルが入っているはずです。これはbase64でもなんでもないただのバイナリなので、base64_decode($myImage)というのは明らかに正しくありません。


ドキュメントを見る限り、$attachment->encodingを指定しておけば送信時に自動的にそのエンコーディングで符号化してくれるようですので、上の行はそもそもいらないと思います。(むしろ現状は存在することで不具合の元になっている)。ファイルから読み出してきた$myImageをそのままcreateAttachment()してやればよいはずです。

◎質問者からの返答

ありがとうございます。

> $attachment->encodingを指定しておけば送信時に自動的にそのエンコーディングで符号化してくれるようですので、上の行はそもそもいらないと思います。

おっしゃる通りでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ