.NET TIPS

.NET Framework 2.0で電子メールを送信するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/06/09

 「TIPS:電子メールを送信するには?」では、SmtpMailクラス(System.Web.Mail名前空間)を使ってメールを送信する方法を紹介している。しかし、このSmtpMailクラスは.NET Framework 2.0ではObsoleteされてしまっており、以前に作成されたコードを動作させるための互換性目的で残されているだけだ。

 .NET Framework 2.0ではこの代わりに、System.Net.Mail名前空間が追加されており、これに所属するクラス群(具体的には、メールを送信する機能を提供するSmtpClientクラスなど)を利用することが推奨されている。

 そこで本稿では、SmtpClientクラスを用いて電子メールを送信する最もシンプルな方法を紹介する。

SmtpClientクラスを用いてメールを送信する方法

 SmtpClientクラスを用いて電子メールを送信するのに最低限必要となるのは、次の5つの情報である。

  1. SMTPサーバ名(電子メールの送信を行うSMTPサーバの名前)
  2. Fromアドレス(送信者のメール・アドレス)
  3. Toアドレス(受信者のメール・アドレス)
  4. 件名(いわゆる“Subject”)
  5. 本文

 これらの情報を次のコード例のように指定して、プログラムを実行すれば、メールを送信できる。

using System.Net.Mail;

// 1. SMTPサーバ名
SmtpClient mailer = new SmtpClient("mail.sample.domain");
// メールの送信処理
mailer.Send(
  "from_address@sample.domain ",     // 2. Fromアドレス
  "to_address@sample.domain ",       // 3. Toアドレス
  "電子メールのタイトル",            // 4. 件名
  "本文をここに書く。");             // 5. 本文
Imports System.Net.Mail

' 1. SMTPサーバ名
Dim mailer As New SmtpClient("mail.sample.domain")
' メールの送信処理
' 2. Fromアドレス
' 3. Toアドレス
' 4. 件名
' 5. 本文
mailer.Send( _
  "from_address@sample.domain ", _
  "to_address@sample.domain ", _
  "電子メールのタイトル", _
  "本文をここに書く。")
SmtpClientクラスにより最もシンプルにメールを送信する方法(上:C#、下:VB)
SMTPサーバ名を文字列でSmtpClientクラスのコンストラクタに指定し、Fromアドレス、Toアドレス、件名、本文といった情報を文字列でSmtpClientオブジェクトのSendメソッドのパラメータに指定する。

 上記のコードを簡単に解説すると、SmtpClientクラスのコンストラクタのパラメータに文字列で「SMTPサーバ名」を指定し、残りの情報(Fromアドレス、Toアドレス、件名、本文)をSendメソッドの各パラメータに指定している。たったこれだけの記述でメールを送信することができる。

 SMTPサーバのポート番号が通常(つまり「25」)と異なる場合は、次のコードの例のように、SmtpClientクラスのコンストラクタの第2パラメータにその番号を指定すればよい。

SmtpClient mailer = new SmtpClient("mail.sample.domain", 1025);
……省略……
Dim mailer As New SmtpClient("mail.sample.domain", 1025)
……省略……
25番以外のポート番号の指定方法(上:C#、下:VB)
SmtpClientクラスのコンストラクタの第2パラメータにポート番号を指定できる。

 なお以上の例では、SmtpClientクラスのコンストラクタにSMTPサーバ名とポート番号を指定する方法を紹介したが、これらは次のプロパティから設定・取得することも可能だ。

  • SMTPサーバ名:SmtpClientオブジェクトのHostプロパティ
  • ポート番号:SmtpClientオブジェクトのPortプロパティ

 本稿で紹介したSendメソッドは同期処理を行うため、SMTPサーバへの接続が完了するか、(接続に失敗して)タイムアウトするまで処理が戻ってこない。これが問題となる場合には、非同期処理を行うSendAsyncメソッドを使う必要があるが、これについては後日公開する別のTIPSで紹介する。

 なお、SMTPサーバへの接続タイムアウト時間は既定で100秒(100000ミリ秒)となっているが、次のプロパティにより変更することもできる(ミリ秒単位で指定)。

  • 接続タイムアウト:SmtpClientオブジェクトのTimeoutプロパティ

 ここで紹介したSmtpClientクラスの使い方は最もシンプルなものだが、CC(カーボン・コピー)やBCC(ブラインド・カーボン・コピー)などに追加のメール・アドレスを指定したり、添付ファイルを追加したりして電子メールを送信することも可能だ。また、SMTPサーバへのアクセスでユーザー名とパスワードによる認証を行ったり、SSL(Secure Sockets Layer)接続を行ったりすることもできる。これらについては後日公開予定のTIPSで紹介する。End of Article

カテゴリ:クラス・ライブラリ 処理対象:電子メール
使用ライブラリ:SmtpClientクラス(System.Net.Mail名前空間)
関連TIPS:電子メールを送信するには?

この記事と関連性の高い別の.NET TIPS
電子メールを送信するには?
JISコード(JIS-2022-JP)でメールを送信するには?
[ASP.NET]PasswordRecoveryコントロールのパスワード通知メールをカスタマイズするには?
[ASP.NET]ユーザーから入力されたデータを任意のあて先にメールするには?
プログラムからブラウザやメーラを起動するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • エンドユーザーの言語設定を取得するには? (2014/10/23)
     エンドユーザーの言語設定を取得する方法はいくつかある。それらの方法で得られるものは何か、どの方法を使えばよいのかを本稿では解説する
  • WPF:DataGridなどにデータをソートして表示する (2014/10/21)
     WPFアプリでDataGridコントロールやListViewコントロールに表示されるデータを、プログラムコードの側からソートして表示する方法を解説する
  • 第1回 Forguncyに触ってみよう (2014/10/15)
     「Excel方眼紙」の「方眼紙」をもじった名前で話題となったForguncyの正式版がリリース。Forguncy連載スタート
  • WPF:リボンUIを実装するには? (2014/10/14)
     Windowsエクスプローラーなど、最近ではリボンを使用したアプリをよく目にするようになった。リボンを持ったWPFアプリを構築する方法を解説する
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

第3回 CCCM導入――実装の5ステップとその注意点
第2回では、クロスチャネル・キャンペーンマネジメント(以下、CCCM)導入における最初の...

レイ・カズン、1年間でEC年間売り上げ額が約2倍に拡大
ファッションブランド「Ray Cassin」を提供するレイ・カズンは10月22日、この1年間でEC事...

ベーシック、中小企業向け無料マーケティングオートメーションツール「Homeup!」ベータ版をリリース
創造カンパニーを掲げるベーシックは10月22日、中小企業をターゲットにした無料マーケテ...