2008-11-26 106 views
0

我使用預先格式化的文本文件作爲電子郵件的模板。該文件有我想要它們的換行符。我想使用此模板發送純文本電子郵件,但是當我這樣做時,我正在失去所有格式。換行符被刪除。如何使用電子郵件模板txt文件並保留格式?

如何解析此文件並保留換行符?我不想使用<pre>標籤,因爲我想發送純文本電子郵件。

我使用的是傳統的ASP ReadAll方法將該模板拉成字符串:

  Dim TextStream 
     Set TextStream = FSO.OpenTextFile(Filepath, ForReading, False, TristateUseDefault) 

     ' Read file in one hit 
     Dim Contents 
     GetTemplate = TextStream.ReadAll ' return file contents 

我缺少什麼?

回答

1

您顯示的代碼不應剝離任何換行符。問題可能在電子郵件生成部分。你能展示那部分嗎?

郵件的內容類型:text/plain?

+0

嗚呼!正確的錢!你讓我今天一整天都感覺很好。我確信我在閱讀文件時錯過了一些東西。但是,我不小心以HTML格式發送電子郵件!再次感謝! – 2008-11-26 15:58:17

3

這是我做了什麼......

我把文本或HTML文件,(我會告訴文本,因爲它的小,但完全相同的代碼適用),我把衆所周知值放入文本文件中,稍後可以替換。

- 開始文本文件

We've generated a new password for you at your request, you can use this new password with your username to log in to various sections of our site. 

Username: ##UserName## 
Temporary Password: ##Password## 

To use this temporary password, please copy and paste it into the password box. 

Please keep this email for your records. 

- 最終文本文件

那麼它的創建鍵/值對的列表,用文字簡單的事情進行替換,和值你用它來代替它。將文件作爲字符串加載到內存中,並循環訪問您的鍵/值對,替換您的文本值。

ListDictionary dictionary = new ListDictionary 
              { 
               {"##UserName##", user.BaseUser.UserName}, 
               {"##Password##", newPassword} 
              }; 


      string fromResources = GetFromResources("forgotpasswordEmail.html"); 
      string textfromResources = GetFromResources("forgotpasswordEmail.txt"); 
      foreach (DictionaryEntry entry in dictionary) 
      { 
       fromResources = fromResources.Replace(entry.Key.ToString(), entry.Value.ToString()); 
       textfromResources = textfromResources.Replace(entry.Key.ToString(), entry.Value.ToString()); 
      } 

然後您可以通過電子郵件的文本,(在這種情況下,textfromResources變量),它將包含所有必要的換行和格式化。

就像我說過的,你可以用HTML文件或任何你想要的文件來做同樣的事情。儘管我的例子是在C#中(我沒有任何經典的ASP代碼方便,對不起),但查找和替換值的概念將適用於傳統的ASP。

+0

你到底描述我是如何把它安裝了。雖然投入了徹底的解釋! – 2008-11-26 16:34:58