我需要在代码中创建一个纯测试电子邮件。这是必需的,因为电子邮件中的信息将由应用程序读取。
我在一个常量字符串中创建了以下值作为我的电子邮件的设置。这些是我希望在电子邮件中出现的字段,因为应用程序需要它们。
public static string TestMail = @"
[Begin Message]
Name = {0}
Phone = {1}
Postalcode = {2}
HomeNumber = {3}
[End message]";
当使用下面的代码发送电子邮件时,需要从电子邮件中读取信息的应用程序会收到如下信息;
=0D=0A [Begin Message]=0D=0A Name =3D nam=
e=0D=0A Phone =3D 0612345678=0D=0A Postalcode =3D =
1234ab=0D=0A HomeNumber =3D 5=0D=0A [End messa=
ge]=0D=0A =20
我用来发送这封电子邮件的代码如下;
var mailBody = String.Format(Constants.TestMail, name, phone, postalCode, homeNumber);
var mail = new MailMessage
{
Subject = Constants.Subject,
Body = mailBody,
IsBodyHtml = false,
};
mail.To.Add(receveiver);
var smtpClient = new SmtpClient();
smtpClient.Send(mail);
这不是我所期望的结果,经过一番挖掘后,我发现问题在于它似乎仍然是一封 HTML 电子邮件,而我需要它是纯文本的。在阅读有关此问题的信息时,我在 Internet 上的 VB.net 中找到了此示例。所以我将常量修改为下面的常量;
public static string TestMail = @"[Begin message]\r\nName = {0}\r\nPhone = {1}\r\nPostalcode = {2}\r\nHomenumber = {3}\r\n[End message]";
然后我使用以下代码创建电子邮件并将其发送给我的客户(在 Outlook 中测试)
var mail = new MailMessage
{
Subject = Constants.Subject,
};
var alternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(mailBody, Encoding.ASCII,"text/plain");
mail.AlternateViews.Add(alternateView);
mail.To.Add(receveiver);
var smtpClient = new SmtpClient();
smtpClient.Send(mail);
运行此代码后,我在 Outlook 中收到一封电子邮件(目前无法测试应用程序),其中包含以下内容;
[Start message]\r\nName = John\r\nPhone = 0612345678\r\nPostalcode = 1234ab\r\nHomeNumber = 5\r\n[End Message]
最后一个结果对我来说似乎不是纯文本电子邮件。只是outlook 2007显示电子邮件有问题吗?还是我还缺少什么?我希望有人可以在这里帮助我并告诉我出了什么问题。