2012-02-03 15 views
1

私はC#を使用して読み込む必要のあるプレーンテキストファイルを持っています。それは十分に簡単だが、それはまた、元の状態だと同じ形式で滞在することがあります:あなたは、私が「見ることができるように元のテキストに影響を与えずにテキストファイルと電子メールを読む

*****************************NB!!!!********************************** 
    *Please view http://www.sdfsdf.comsdfsdfsdf .      * 
    ********************************************************************* 


     *** DO NOT DELETE or ALTER ANY OF THE FOLLOWING TEXT *** 

          Company X PTY. 
        Lorem Ipsum Office 
        Last Change - 01 February 2008 

      APPLICATION TO ESTABLISH A COMMUNITY WITHIN 
       THE RESTIN DISTRICT OF THE IPSUM. 

    =================================================================== 

    1. COMMUNITY and ACTION 

    Give the name of the community. This is the name that will be 
    used in tables and lists associating the community with the name 
    district and community forum. The community names that are 
    delegated by Lorem are at the district level 
    The Action field specifies whether this is a 'N'ew application, an 
    'U'pdate or a 'R' removal. 

    1a. Complete community name:**{0}** 
    1b. Action - [N]ew, [U]pdate, or [R]emoval :**{1}** 

これはサンプルファイル「mySample.txt」からの抜粋です自動化されたプロセスに置き換えられるファイルにプレースホルダー{0}と{1}があります。

私のC#では、ファイル全体をStringBuilderオブジェクトに読み込み、StringBuilder.AppendFormatメソッドを使用してプレースホルダを置き換えるために、ストリームリーダーを使用しています。

問題は、電子メールメッセージ本文にテキストを追加し、その形式を送信して別のものに見える場合です。プロセス中に空白やタブがたくさん残っているように見えます。

private void Submit_Click(object sender, EventArgs e) 
    { 
     //create mail client 
     System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 
     System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
     message.To.Add(ConfigurationManager.AppSettings["SubmitToEmail"]); 
     message.Bcc.Add("[email protected]"); 
     message.Subject = "Test Subject"; 

     message.BodyEncoding = Encoding.ASCII; 
     message.IsBodyHtml = false; 
     message.Body = _PopulateForm(_GatherInput());//calls method to read the file and replace values 
     client.Send(message); 

     //cleanup 
     client = null; 
     message.Dispose(); 
     message = null; 

    } 

どのように書式を維持するためのアイデアはありますか?

おかげで、 ジャック

+1

平文メールはタブをサポートしていません。元のファイルにタブが含まれている場合は、スペースに展開します。 Visual Studioエディタでこれを行うコマンドがあります。 – arx

+0

"それは異なって見える"よりも具体的ですか?それを16進エディタで開くと、どのバイトが欠けていますか? –

+0

@arxコマンドは、[編集] - > [詳細設定] - > [選択していない行を選択解除]です。元のテキストファイルで行う必要があります。 – Alexandre

答えて

0

答えはネットとメールメッセージオブジェクトにあったようです。 Bodyプロパティにコンテンツを追加する代わりに、alternateViewオブジェクトを作成してそれに追加する必要があります。それが私の問題を解決しました。

よろしく、 ジャック

0

あなたが持っている問題は、HTMLのようにプレーンテキストを送っているということです。 HTMLはテキストとは別に表示されるため、レイアウトが変更されるのは当然です。プレーンテキストには改行(\n)、タブ(\t)などがあり、HTMLには改行(<BR>)とさまざまなレイアウト方法があります。私があなただったら

、私は第一、中央に配置されたテキスト項目については(置き換える機能x.Replace("\n", "<BR>");があるはずです)<BR>

を新しい行を置き換えることから始め<p style="text-align:center" }>でそれらをラップし、</p>でしょう。

+0

こんにちはmj、私のテキストファイルはプレーンテキストです。 。メッセージ本文はAsciiに設定され、IsBodyHtmlはfalseに設定されます。 HTMLは関係していませんか? – Jacques

+0

どのブラウザ/メールクライアントでメッセージを表示していますか?見通しなどの場合は、プレーンテキストで表示するオプションがあります。 –

+0

これは見通しですが、間違いなくプレーンテキストのみです。 – Jacques

関連する問題