2008-11-26 105 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