- 締切済み
Windowsメールを別アプリから操作して、メールを送信する方法
行いたい処理は、 「C#で作成したアプリケーションから、 Windowsメール(Vistaの付属メーラー)を使用して、 添付ファイル付きのメールを送信する」 です。 (OSは、WindowsVista(Business)です) ユーザーがC#のアプリケーションを操作し、 PC内のログファイルの送信を行う処理等に使用したいのですが、 このような事は可能でしょうか? ちなみに、Process.Start()で、"mailto:"を使用する方法や、 MAPISendDocuments()を使用した方法では、 標準メーラーは起動するのですが、 その状態から、送信処理を実行させる方法がわかりませんでした。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mindatg
- ベストアンサー率48% (110/227)
Windowsメールじゃありませんが、.netFramework2.0でメール送信するというサンプルプログラムを。 ファイルを添付させたり云々はSystem.Net.Mailのヘルプでも参照してください。 // メール送信に必要な情報のクラス public class clsMailInfo { public string ServerName = ""; // サーバー名(smtp.hoge.ne.jp) public int PortNumber = 0; // ポート番号(25とか) public string SenderAddress = ""; // 送信者のアドレス public string Subject = ""; // 件名 public ArrayList ReceiverAddress = new ArrayList(); // 送信先のアドレスのリスト } private int SendMail( clsMailInfo info // (I) メールの設定等の構造体 string strBody // (I) メール本文 ) { MailMessage mail = new System.Net.Mail.MailMessage(); SmtpClient smtp = new System.Net.Mail.SmtpClient(); // 送信用サーバー設定 mail.From = new MailAddress(info.SenderAddress); // 送信者 mail.Subject = info.Subject; // 件名 smtp.Host = info.ServerName; // サーバー名 smtp.Port = info.PortNumber; // ポート番号 mail.Body = strBody; //mail.Body = "ここに本文を入力します。\n"; mail.BodyEncoding = System.Text.Encoding.GetEncoding(50220); // JIS //mail.BodyEncoding = System.Text.Encoding.GetEncoding(932); // SHIFT-JIS // 受信者リストの中身全部をToに追加 foreach ( string strAdr in info.ReceiverAddress ) { mail.To.Add(new System.Net.Mail.MailAddress(strAdr)); } try { // メールを送信 smtp.Send(mail); } catch (Exception ex) { MessageBox.Show(ex.Message); return -1; } finally { mail.Dispose(); // メールオブジェクトの破棄 } return 1; }