0

SMTP/.NETメールを使用してインラインHTMLをメールに送信する際に問題が発生しました。MailDefininitionクラスと同様に標準クラスを試しましたが、翻訳されたページではなく、生のコードをインライン化し続けています。

私はそれがおそらく私が見逃している小さなものであることを知っています、以下は私のコードです。ありがとう

     public static void SendMail(string toAddress,  string subject, string messageBody)
    {
        MailDefinition message = new MailDefinition();
        message.CC = MailCCAddress;
        message.From = "orders@test.com";
        message.Subject = subject;
        message.IsBodyHtml = true;
        ListDictionary replacements = new ListDictionary();

        System.Net.Mail.MailMessage fileMsg;
        fileMsg = message.CreateMailMessage(toAddress, replacements, messageBody, new System.Web.UI.Control());

        string _hostName = HostName;

        SmtpClient client = new SmtpClient(_hostName);
        client.Credentials = CredentialCache.DefaultNetworkCredentials;
        //client.Send(message);
        client.Send(fileMsg);
    }
4

2 に答える 2

2

MailMessageそれでも問題が解決しない場合は、Body-Encodingを設定することもできます。例えば、

//Nick's code
MailMessage mail = new MailMessage("orders@test.com", toAddress, subject, messageBody);
mail.IsBodyHtml = true;

//set encoding
mail.BodyEncoding = Encoding.UTF8; //or SevenBit, etc, whatever is appropriate.

//send
SmtpClient client = new SmtpClient(_hostName);
client.Send(mail);

また、AlternateViewsコレクションを使用して、コンテンツのMIMEタイプをより適切に制御することもできます(したがって、text / htmlなどとして指定できます)。次のように、これを使用して、オプションでプレーンテキストバージョンとHTMLバージョンの両方を含めることもできます。

//create the mail message
MailMessage mail = new MailMessage("orders@test.com", toAddress) { Subject = subject };

//first we create the Plain Text part
AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");
//then we create the Html part
AlternateView htmlView = AlternateView.CreateAlternateViewFromString("<b>this is bold text, and viewable by those mail clients that support html</b>", null, "text/html");

//add both views
mail.AlternateViews.Add(plainView);
mail.AlternateViews.Add(htmlView);

//send the message as before
于 2012-12-27T19:17:17.487 に答える
0
MailMessage mail = new MailMessage("orders@test.com", toAddress, 
    subject, messageBody);

mail.IsBodyHtml = true;
SmtpClient client = new SmtpClient(_hostName);
client.Send(mail);

これが機能しない場合は、messageBodyに問題がある可能性があります。コードのデバッグを試して、messageBodyが適切なhtmlでないという問題があるかどうか、または一部の文字がエスケープされている可能性があるかどうかを確認できます。

于 2012-12-27T17:49:02.600 に答える