スレッド表示 | フラット表示〕 全トピック 920 件中 729 番目 次≫ ≪前

メールで画像表示

created: 2003-11-14 14:00 | modified: 2003-11-22 18:16 | reply: 7

[1006] メールで画像表示

user: may | created: 2003-11-14 14:00
PHPからメール送信処理を行いたいのですが
Content-Type: image/jpeg;にして
base64_encodeしたデータを送るのですが
うまく表示できませんで添付ファイルとして
認識されてしまいます。
ソースを見ると添付だと通常/9j/から
始まっているのですが
このパートに納めるとこの行がないのが
原因なんでしょうか・・
うまく書けなくてすみません。
reply: 1012 返信 編集 削除

[1012] Re.メールで画像表示

user: ゆうじ | created: 2003-11-14 18:35
base64_encodeされた画像ファイルが
添付ファイルとして認識されるのは正しいことです。
表示できるかどうかは、メーラーの仕様によるところです。


メールヘッダとメール本文の
Content-Type:
Content-Transfer-Encoding:
Content-Disposition:
と、
エンコード部分のコードをお知らせ頂ければ、
少しはご協力できるかもしれません。
Parent: 1006  reply: 1048 返信 編集 削除

[1048] Re.Re.メールで画像表示

user: may | created: 2003-11-19 14:42
遅くなりすみません。

メールのヘッダは
Content-Type: multipart/mixed;
Content-Transfer-Encoding:Base64

図の部分は
Content-Type: image/jpeg;
Content-Transfer-Encoding: base64

Content-Disposition: という行は
書いておりません・・^^; これが原因でしょうか?

エンコード部分は
$buffer = base64_encode (fread (fopen ($image, "r"),$image_size));
$image = chunk_split($buffer);

という感じです。
Parent: 1012  reply: 1049 返信 編集 削除

[1049] サンプル

user: ゆうじ | created: 2003-11-19 15:39
こんにちは。
エンコード部のコードは問題ないようですね。


> メールのヘッダは
> Content-Type: multipart/mixed;
> Content-Transfer-Encoding:Base64

ヘッダ内の件名にや送信者欄に、
JIS → base64 にエンコードした日本語を使うのでしたら、
Content-Transfer-Encoding: 7bit を推薦。


> Content-Disposition: という行は
> 書いておりません・・^^; これが原因でしょうか?

そのようですね。これが原因だと思われます。


マルチパートメールの基本的な形(フォーマット)は、

1.ヘッダ部で、マルチパートの宣言とマルチパート区切り文字列を宣言。

2.本文は、
  A.マルチパートの区切り文字列
  B.Content-Type などの情報
  C.データ
  ※これらをパートの数だけ繰り返す。
  最後に、マルチパートの区切り文字列--

このようになりますが、
テキスト以外の場合「Content-Type などの情報」の部分に、
Content-Disposition も必要になります。
以下のサンプルを参考に直してみてください。


●ヘッダ部:
Content-Type: multipart/mixed; boundary="------_3FBB360_MULTIPART_"
Content-Transfer-Encoding: 7bit

●本文:
--------_3FBB360_MULTIPART_
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit


//
// テキスト
//

--------_3FBB360_MULTIPART_
Content-Type: image/jpeg; name="xxxx.jpg"
Content-Disposition: attachment;
filename="xxxx.jpg"
Content-Transfer-Encoding: base64

//
// 画像データ(base64Encode済)
//


--------_3FBB360_MULTIPART_--
Parent: 1048  reply: 1073 返信 編集 削除

[1073] うーん・・

user: may | created: 2003-11-22 15:16
ヘッダ部のエンコーディングを7ビットに変更。

イメージパートに
Content-Disposition: attachment; 行を入れたんですが状態変わらず
×マークで添付ファイルとしてくっついてきます。

他は何か原因と思われるところはありませんでしょうか?
すみません。
Parent: 1049  reply: 1074 返信 編集 削除

[1074] 画像ファイルが変?

user: ゆうじ | created: 2003-11-22 16:20
×マークが表示されてるってことは、
画像ファイルが異常ってことではないでしょうか。

はじめに伺っておくべきでしたが、
OSやPHPのバージョンなどお知らせいただけますか。
Parent: 1073  reply: 1075 返信 編集 削除

[1075] 環境

user: may | created: 2003-11-22 17:29
OSはLinux RedhatでPHPは4.3.2です。
ただメール送信は
WindowsXPから正しく見えるファイルを
付けて確認している状態です。
Parent: 1074  reply: 1076 返信 編集 削除

[1076] magic_quotes_runtime

user: ゆうじ | created: 2003-11-22 18:16
お使いのバージョンで、
base64とかchunk_splitとかのバグレポート等はありませんでした。

そうすると残るは、ファイル読み込み部分ですが、
magic_quotes_runtime
magic_quotes_sybase
これらの影響は考えられませんか。

これが On になってて fread の際にデータに含まれる /(0x2F) や "(0x22) が
クオートされてるのかもしれませんね。(推測です)

php.ini で、これらををOffに設定すると直ったりしませんか。
Parent: 1075  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 729 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑