コードでプレーンテストのメールを作成する必要があります。電子メールの情報はアプリケーションによって読み取られるため、これは必須です。
メールの設定として、定数文字列に次の値を作成しました。これらは、アプリケーションがそれらを必要とするので、私が電子メールに入れたいフィールドです。
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でこの例を見つけました。そこで、定数を次のように変更しました。
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年の見通しだけですか?それとも私はまだ何かが足りないのですか?誰かがここで私を助けてくれて、何が悪いのか教えてくれることを願っています。