3

コードでプレーンテストのメールを作成する必要があります。電子メールの情報はアプリケーションによって読み取られるため、これは必須です。

メールの設定として、定数文字列に次の値を作成しました。これらは、アプリケーションがそれらを必要とするので、私が電子メールに入れたいフィールドです。

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年の見通しだけですか?それとも私はまだ何かが足りないのですか?誰かがここで私を助けてくれて、何が悪いのか教えてくれることを願っています。

4

1 に答える 1

4

@文字を削除すると、エスケープ文字が正しく処理されます。@ がある場合、すべてのエスケープ文字は改行などではなくプレーンテキストとして扱われます。

于 2011-02-04T08:37:10.833 に答える