0

OpenPop コンポーネントを介して pop3 メールを受信するように取り組んでいます。サーバーからメールを受信し、SQL データベースに保存しています。この時点で、問題はありません。

しかし、今日、いくつかの画像がリッチテキストボックスに表示されていないことに気付きました。このメールのソース コード:

元画像ファイル名:image001.jpg

コンテンツ タイプ: 画像/jpeg; name="image001.jpg"
Content-Transfer-Encoding: base64
Content-ID: image001.jpg@01D16A6B.41013C60

html 本文の cid 値: image001.jpg@01D16A6B.41013C60

上記のコードでは、私は何の問題もありません。CID値から画像ファイル名を取得しているためです。(image001.jpg)。実際の画像ファイル名で SQL サーバーから画像を取得しています。

しかし、Gmail の Web インターフェイス経由で同じメールを送信すると、

コンテンツ タイプ: 画像/jpeg; name="image001.jpg"
Content-Disposition: インライン; filename="image001.jpg"
コンテンツ転送エンコーディング: base64
コンテンツ ID: ii_iksd5tmd1_152f4c90885b6c5d

そして、richtextbox に CID 値が表示されます。

cid:ii_iksd5tmd1_152f4c90885b6c5d

これが問題です。

CID 値にはファイル名情報が含まれていません。だから、私はイメージを取得していません。メールが Gmail から受信されると、CID 値が変化します。

真の画像ファイル名をキャッチするにはどうすればよいですか?

本当にありがとう。

4

3 に答える 3

1

ファイル名を取得するには、次のロジックを使用します。

Content-Dispositionヘッダーが存在する場合は、filenameパラメータ値を添付ファイル名として使用します。それ以外の場合は、ヘッダーのnameパラメーター値が存在する場合は、それを使用するようにフォールバックします。Content-Type

Content-Idヘッダー値は何でもかまいません。実際に期待できるのは、メッセージのコンテキスト内で一意の文字列であることだけです。

明らかに、メッセージの HTML の cid: URL はContent-Idヘッダー値を参照するため、添付ファイルをディスクに保存した後、後日添付ファイルを参照できるようにする場合はContent-Id、.添付ファイルのデータベース レコード。

于 2016-02-18T22:10:36.550 に答える
0

オープンポップの結果:

Content-Description : null
Content-ID : null
Content-Disposition : null

別の Web インターフェイスを試していますが、同じ結果です。例: Outlook Web インターフェイス

例:

リッチテキストの HTML 本文

"img src="cid:ii_iksd5tlv0_152f4c90885b6c5d" height="398" width="530">
img src="cid:ii_iksd5tmd1_152f4c90885b6c5d" height="398" width="530">
>

元画像ファイル名:DSC00011.jpg、DSC00018.jpg

于 2016-02-18T22:29:39.367 に答える
0

HTML メールでインラインで使用される画像には、必ずしも「真のファイル名」があるとは限りません。CID のみを使用している可能性があります。画像とともに CID をデータベースに保存し、データベースから CID を介して画像を取得して表示する必要があります。

于 2016-02-18T22:25:38.827 に答える