我需要在代码中创建一个普通测试电子邮件。这是必需的,因为电子邮件中的信息将由应用程序读取。
我在常量字符串中创建了以下值作为我的电子邮件的设置。这些是我想要在电子邮件中的字段,因为应用程序需要它们。
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电子邮件,而我需要它是纯文本。在阅读有关此问题的同时,我在互联网上的VB.net中找到了this示例。所以我将常量修改为下面的常量;
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]
最后的结果对我来说似乎不是一封纯文本邮件。只是2007年的Outlook有问题才能显示电子邮件吗?还是我还缺少什么?我希望有人可以帮助我,并告诉我出了什么问题。