みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Windowsメールを別アプリから操作して、メールを送信する方法

行いたい処理は、
「C#で作成したアプリケーションから、
Windowsメール(Vistaの付属メーラー)を使用して、
添付ファイル付きのメールを送信する」
です。
(OSは、WindowsVista(Business)です)
ユーザーがC#のアプリケーションを操作し、
PC内のログファイルの送信を行う処理等に使用したいのですが、
このような事は可能でしょうか?

ちなみに、Process.Start()で、"mailto:"を使用する方法や、
MAPISendDocuments()を使用した方法では、
標準メーラーは起動するのですが、
その状態から、送信処理を実行させる方法がわかりませんでした。

投稿日時 - 2009-03-05 10:34:56

QNo.4769852

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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;
}

投稿日時 - 2009-03-05 11:02:07

あなたにオススメの質問