2012-12-04 10 views
5

ハードドライブに保存せずに電子メール経由で添付ファイルを使用してStringList全体を送信するにはどうすればよいですか?私は添付ファイルの制限を認識しています。メールで添付ファイルとしてStringListを送信する - Indy

+0

あなたは二TIdTextを試しましたか?あなたはおそらく、UTF-16やUCS-2のようなものにCharSetを設定する必要があります。おそらく、80番目の文字の周りに行を折り返すでしょう...しかし、おそらくそれは "うまくいく"でしょう。 TIdTextはTStringを送信するように設定されています。使用するようにしてください。 –

答えて

5

かわりTIdAttachmentFileのTIdAttachmentMemoryを使用することができます。

StringList := TStringList.Create; 
StringList.Append('foo'); 
StringList.Append('bar'); 

MemoryStream := TMemoryStream.Create; 
StringList.SaveToStream(MemoryStream); 
MemoryStream.Position := 0; 

IdMessage := TIdMessage.Create(nil); 
IdAttachmentMemory := TIdAttachmentMemory.Create(IdMessage.MessageParts,MemoryStream); 
+4

別の 'TMemoryStream'を使用する代わりに、' CopyFrom'パラメータ値なしで 'TIdAttachmentMemory'を構築し、その' OpenLoadStream() 'メソッドを使って' SaveToStream() 'に渡すことができる' TStream'を得ることができます。 。代わりに 'StringList.Text'を' TIdAttachmentMemory'コンストラクタに渡すこともできます。 –

0

ファイルに保存してファイルを添付ファイルとして送信してみませんか?

+1

それ以外の方法ではできません:) –

+0

ハードドライブへのアクセス権が必要です..アプリケーションに複雑さを追加します... CPUの労力を増やします::古いプログラマはマシンを遅くして毎サイクルカウントします:) –

+0

はいiたとえそれが面倒だとしてもそれはうまくいくとは思うが、それはうまくいくだろう:-) –

2

StringList.Textのプロパティを使用できます。このプロパティは、オブジェクトを渡そうとするのではなく、文字列パラメータとして文字列リストの内容を読み書きするために使用できます。

+0

例を見せてもらえますか? :) –

+0

電子メールを使った例はありませんが、基本的にSenderStringList.Textを文字列変数に置きます。その後、その文字列をメールで送信し、受信者はStringListを作成し、文字列(ReceiverStringList.Text:=変数)を読み込みます。 –

+1

はい、この質問は電子メールの添付ファイルについてのものです。文字列リストのテキストを変数に配置する方法ではありません:) –

関連する問題