在C#中格式化纯文本电子邮件

时间:2010-07-20 08:26:56

标签: c# email outlook office-interop

我正在尝试使用纯文本在电子邮件中打印表格。 我有以下代码:

string body = string.Format("{0,-30}{1,-30}{2,-50}{3,-40}",
                                   "Col1", "Col2", "Col2", “Col4”);

body += string.Format("{0,-30}{1,-30}{2,-50}{3,-40}",
                                value1, value2, value3, value4);

Microsoft.Office.Interop.Outlook.ApplicationClass myOutlookApplication = null;
myOutlookApplication = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.MailItem myNewMail = 
    (Microsoft.Office.Interop.Outlook.MailItem)myOutlookApplication.CreateItem( 
      Microsoft.Office.Interop.Outlook.OlItemType.olMailItem );            

myNewMail.To = recipient;
myNewMail.Subject = subject;
myNewMail.Body = body;
myNewMail.BodyFormat = OlBodyFormat.olFormatPlain;            

myNewMail.Send();

我遇到的问题是身体的文字没有对齐。它似乎也将文本包装在邮件中。谁能告诉我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

在纯文本中创建(或实际模仿行为)表只适用于:

  1. 表格中的值与列的宽度完全相同。这是你(程序员)应该通过在文本太短时用空格跟踪文本或者如果文本太长则剪切文本来处理的事情。

  2. 正在接收文本的用户使用等宽字体(http://en.wikipedia.org/wiki/Monospaced_font)来查看表格。如果您通过电子邮件发送表格,那将是您无法控制的......

答案 1 :(得分:0)

这是由于字体造成的。如果你想要它排成一行,你需要像代码编辑器那样使用固定宽度的字体。

否则你可以使用TAB尝试一些东西。但这可能很棘手。