0

非常にデータ集約型のMetroアプリを作成しており、HTML形式でメールを送信する必要があります。グーグルした後、私はこのコードに出くわしました。

var mailto = new Uri("mailto:?to=recipient@example.com&subject=The subject of an email&body=Hello from a Windows 8 Metro app.");
await Windows.System.Launcher.LaunchUriAsync(mailto);

これは、1つの例外を除いて、私にとってはうまく機能します。このメールの本文をhtml文字列で生成しているので、クラスにこのようなコードがあります。

string htmlString=""
DALClient client = new DALClient();
htmlString += "<html><body>";
htmlString += "<table>";
List<People> people = client.getPeopleWithReservations();
foreach(People ppl in people)
{
    htmlString+="<tr>"
    htmlString +="<td>" + ppl.PersonName + "</td>";
    htmlString +="</tr>";
}
htmlString +="</table>";
htmlString +="</body><html>";

このコードを実行すると、電子メールクライアントが開きます。ただし、結果はプレーンテキストとして表示されます。これをフォーマットされたhtmlに表示して、htmlタグなどが表示されないようにする方法はありますか?前もって感謝します。

4

1 に答える 1

1

HTML を mailto に渡すことはできません。代わりに、HTML コードをデフォルトの Windows ストア メール アプリに渡すことができる共有を使用できます (残念ながら、デフォルトのデスクトップ メール アプリケーションには渡せません)。

ページのサンプルを次に示します。

public sealed partial class MainPage : Page
{
   private string eMailSubject;
   private string eMailHtmlText;

   ...

   private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
   {
      // Check if an email is there for sharing
      if (String.IsNullOrEmpty(this.eMailHtmlText) == false)
      {
         // Pass the current subject
         args.Request.Data.Properties.Title = this.eMailSubject;   

         // Pass the current email text
         args.Request.Data.SetHtmlFormat(
            HtmlFormatHelper.CreateHtmlFormat(this.eMailHtmlText));

         // Delete the current subject and text to avoid multiple sharing
         this.eMailSubject = null;
         this.eMailHtmlText = null;
      }
      else
      {
         // Pass a text that reports nothing currently exists for sharing
         args.Request.FailWithDisplayText("Currently there is no email for sharing");
      }
   }

   ...

   // "Send" an email
   this.eMailSubject = "Test";
   this.eMailHtmlText = "Hey,<br/><br/> " +
      "This is just a <b>test</b>.";
   DataTransferManager.ShowShareUI(); 

別の方法として SMTP を使用することもできますが、私が知る限り、Windows ストア アプリ用の SMTP 実装はまだありません。

于 2013-03-12T10:47:31.523 に答える