私はWindowsストアアプリケーション(Windows 8)を開発しています。
アプリケーションデータに保存されているデータとアドレスに基づいて、ユーザーがデータやアドレスを入力しなくてもメールを送信する必要があります。
それを実装するための正しい/簡単な方法は何でしょうか?
EitanB
私はWindowsストアアプリケーション(Windows 8)を開発しています。
アプリケーションデータに保存されているデータとアドレスに基づいて、ユーザーがデータやアドレスを入力しなくてもメールを送信する必要があります。
それを実装するための正しい/簡単な方法は何でしょうか?
EitanB
あなたはで試すことができます
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);
正しい方法は、共有を使用することです。アプリはHTMLドキュメントまたはテキストを作成して共有する必要があります。ユーザーは共有チャームからメールを選択し、HTML/テキストがメールの本文になります。
詳細については、こちらをご覧ください...
http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh973055.aspx
これは、mailto:リンクに使用する正しい構文です(上記の他のmailto:の例とは異なり、正しくありません。)
var mailto = new Uri("mailto:yourname@email.com?subject=" + subject + "&body=" + body);
await Launcher.LaunchUriAsync(mailto);
mailto:メソッドの問題は、ユーザーがmailto:に関連付けられたクライアントプログラムを持っていない場合、何も起こらないことです。
使用するのに最も信頼できる方法は、ある種のWebサービスまたはWCFサービスです。Windows 8で「正しい」方法と見なされているときに共有チャームを使用することは、ユーザーがまだメールクライアントをインストールしていない可能性があるため(たとえば、メールをgmail.comに依存している場合)、必ずしも最善ではありません。
Universal WinRT Windows Phoneアプリケーションを開発している場合は、「Microsoft.Phone.Tasks.EmailComposeTask」名前空間がWinRTアプリケーションで機能しないため、「Windows.ApplicationModel.Email.EmailMessage」名前空間を使用できます。
次に、このコードを使用して、新しい電子メールを作成して起動します。
// Create your new email message.
var em = new EmailMessage() ;
// Add as much EmailRecipient in it as you need using the following method.
em.To.Add(new EmailRecipient("yourname@yourdomain.com"));
em.Subject = "Your Subject...";
em.Body = "Your email body...";
// You can add an attachment that way.
//em.Attachments.Add(new EmailAttachment(...);
// Show the email composer.
await EmailManager.ShowComposeNewEmailAsync(em);
それがあなた(または他の開発者)の問題を解決することを願っています。
よろしく。
SMTPサーバーに接続して、HELO、MAIL、RCPTなどのコマンドを発行することはいつでも可能です。もちろん、接続するにはSMTPサーバーが必要です。これを企業のイントラネットで使用してメールを送信します。