それは不可能だ ?!
System.Net.Mail 名前空間を使用してそれを行う詳細な方法を提供しました。
private void button1_Click(object sender, EventArgs e)
{
SmtpClient smtpserver = new SmtpClient();
smtpserver.Credentials = new NetworkCredential("email@domain", "passphrase");
smtpserver.Port = 587;
smtpserver.Host = "smtp.live.com";
smtpserver.EnableSsl = true;
MailMessage mail = new MailMessage();
mail.From = new MailAddress("email@domain");
mail.To.Add("recipient@domian");
mail.Subject = "testing";
string pathTOAttachment;
string _Attachment = pathToAttachment;
Attachment oAttch = new Attachment(_Attachment);
mail.Attachments.Add(oAttch);
mail.Body = "message body";
ThreadPool.QueueUserWorkItem(delegate
{
try
{
smtpserver.Send(mail);
}
//you can get more specific in here
catch
{
MessageBox.Show("failure sending message");
}
});
}
注目すべき (このコード サンプルでは考慮されていません):
- 一部のISPは添付ファイルのサイズ制限を課している場合があり、電子メールを送信する前に必ず確認してください.
- smtp ホスト/ポートは異なる場合があります。最も効率的な方法は、定期的に更新されるデータベースに対してチェックするか、ユーザーが自分で設定できるようにすることです。
- スレッド部分はすべて UI の応答性に関するものですが、メールがまだ送信されている状態でユーザーがアプリのメイン ウィンドウを閉じると、メールはプリエンプトされます。