再度質問させていただきます。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--

回答の条件
  • URL必須
  • 1人10回まで
  • 登録:
  • 終了:2008/07/15 10:44:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.1

回答回数897ベストアンサー獲得回数145

ポイント60pt

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

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

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

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


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

id:uniom

ありがとうございます。

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

おっしゃる通りでした。

2008/07/15 10:43:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません