2017-09-09 10 views
0

ファイルから添付ファイルを追加する良い例がたくさんありますが、私はそれをAlternateView.CreateAlternateViewFromStringと同じ方法で実行できるかどうか疑問に思っていました。添付ファイルをMIME文字列から直接添付する

私は別々にIMAPを使用して1つのアドレスから電子メールのbody_textとbody_headersを取得し、いくつかの変更を加えて別の(SMTP経由で)送信したいが、添付ファイルは可能な限り忠実に追加したい。タグをして喜んでプレーンテキストにHTMLを追加: "Content-Typeの" 私は彼らによってBODY [TEXT]からMIMEパートを抽出するためにはMailMessageと私が書いた

SmtpClient(System.Net & System.Net.Mail)のコードを使用していますこのように表示します。 MIMEにも添付ファイルがあります(下の例を参照してください)ので、MIMEから "Content-Type:application/octet-stream"を抽出できる文字列から直接添付ファイルを簡単に追加できるはずです。現在のところ、アプリケーション/オクテットストリームでの作業にのみ興味があります。

私はいずれかを含む文字列としての私のコードの一部で、これは用意してください例から

Content-Type: application/octet-stream; name="test_file.abc" 
Content-Disposition: attachment; filename="test_file.abc" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_j7datrbn0 

YWJjIGZpbGU= 

それとも

Content-Disposition: attachment; filename="test_file.abc" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_j7datrbn0 

YWJjIGZpbGU= 

を:

* 53 FETCH (BODY[TEXT] {614} 
--001a1140ae52fcc4690558c101ec 
Content-Type: multipart/alternative; boundary="001a1140ae52fcc4630558c101ea" 

--001a1140ae52fcc4630558c101ea 
Content-Type: text/plain; charset="UTF-8" 

Blah blah 

--001a1140ae52fcc4630558c101ea 
Content-Type: text/html; charset="UTF-8" 

<div dir="ltr">Blah blah</div> 

--001a1140ae52fcc4630558c101ea-- 
--001a1140ae52fcc4690558c101ec 
Content-Type: application/octet-stream; name="test_file.abc" 
Content-Disposition: attachment; filename="test_file.abc" 
Content-Transfer-Encoding: base64 
X-Attachment-Id: f_j7datrbn0 

YWJjIGZpbGU= 
--001a1140ae52fcc4690558c101ec-- 
) 
$ OK Success 

の他の側面の全て私のコードが動作しますが、私が持っているMIMEデータから添付ファイルを直接追加する簡単な方法があります。私はMimeKitや標準VS以外のライブラリを使用していません。

この長い質問をお読みいただきありがとうございます。

答えて

0

そうでもない私は何をしたかったが、次のように私は私が必要なものを達成:無意味な変換の

string name = find_item_by_key(attachment_content, "filename"); // looks for key="value" and returns value 
string attachment_base64 = attachment_content.Substring(attachment_content.LastIndexOf("\r\n\r\n")); 
attachment_base64 = attachment_base64.Trim('\r', '\n'); 
byte[] attachment_bytes = Convert.FromBase64String(attachment_base64); 
Attachment att = new Attachment(new System.IO.MemoryStream(attachment_bytes), name); 
mail.Attachments.Add(att); 

たくさんのデータがすでにBase64であるとmail.Attachments.Addは間違いなく戻ってそれを変換しないであろうから、上に行きます再び。

関連する問題