[.NET]メールの送信(.NET2.0以降) [Programming .NET Tips]
[ポイント]
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
・補足
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
クラス名/列挙体名 | 概要 |
System.Net.Mail.SmtpClientクラス | SMTPサーバを表すクラスです。 |
System.Net.Mail.MailMessageクラス | メールを表すクラスです。 |
System.Net.Mail.MailAddressクラス | メールアドレスを表すクラスです。 |
System.Net.Mail.Attachmentクラス | 添付ファイルを表すクラスです。 |
System.Net.NetworkCredential | 認証情報を表すクラスです。 |
System.Net.Mail.MailPriority列挙体 | メールの優先度を表す列挙体です。 |
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
| |
[VB.NET]メールを送信するサンプル |
| |
[C#]メールを送信するサンプル |
本サンプルは、送信元メールアドレスをYahooメールで確認しています。(2008.12.29現在) Yahooメールで確認するには、 『Yahooメールを他のメーラーで送受信できるようにする』必要があります。 Yahooメールの『POPアクセスとメール転送』で、『ブラウザアクセスとPOPアクセス』に設定して下さい。 あとは、 ユーザ名:YahooID パスワード:YahooIDのパスワード SMTPサーバ:『smtp.mail.yahoo.co.jp』 SMTPのポート番号:『587』 でメールを送信できます。 |
[.NET]関数(y=f(x))のグラフをImageに描画する [Programming .NET Tips]
[ポイント]
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
実行結果
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
実行結果
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
実行結果
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
実行結果
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
| |
[VB.NET]関数のグラフをImageに描画する例 |
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
| |
[VB.NET]例:一次関数の定義 |
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
| |
[VB.NET]DrawFunctionメソッドの呼び出し |
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
| |
[VB.NET]関数を二次関数で定義した場合 |
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
| |
[VB.NET]関数を三角関数で定義した場合 |
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
| |
[VB.NET]関数を平方根で定義した場合 |
[Algo]和と積から元の2数の算出 [Programming Algorithm]
[はじめに]
(1)ある2数の和と積から、元の2数を求めるアルゴリズムです。
例えば、『足して5』、『掛けて6』になる2つの数は、
2と3になります。
これを解くアルゴリズムとして、
2次方程式の解の解法を利用することができます。
具体的には、
Xについての2次方程式
X2-5X+6=0 は因数分解すると、
(X-2)(X-3)=0 となり、
解はX=2、3 となります。
つまり、
X2-(α+β)X+αβ=0 の解が、
X=α、β となることを利用することで、
元の2数を求めることができます。
α+β=A、αβ=Bとした時、
2次方程式の解の公式から、
X2-AX+B=0
X= {A±(A2 - 4B)1/2} / 2 となり、
求める2数は、
X= {A+(A2 - 4B)1/2} / 2 と
X= {A-(A2 - 4B)1/2} / 2
となります。
また、2次方程式の判別式が負数の場合、
つまり2次方程式の実数解が存在しない場合は、
元の2数が存在しないので、解を算出する前にチェックする必要があります。
[参考]2次方程式の解の公式
[ソース]
(1)ある2数の和と積から、元の2数を求めるアルゴリズムです。
例えば、『足して5』、『掛けて6』になる2つの数は、
2と3になります。
これを解くアルゴリズムとして、
2次方程式の解の解法を利用することができます。
具体的には、
Xについての2次方程式
X2-5X+6=0 は因数分解すると、
(X-2)(X-3)=0 となり、
解はX=2、3 となります。
つまり、
X2-(α+β)X+αβ=0 の解が、
X=α、β となることを利用することで、
元の2数を求めることができます。
α+β=A、αβ=Bとした時、
2次方程式の解の公式から、
X2-AX+B=0
X= {A±(A2 - 4B)1/2} / 2 となり、
求める2数は、
X= {A+(A2 - 4B)1/2} / 2 と
X= {A-(A2 - 4B)1/2} / 2
となります。
また、2次方程式の判別式が負数の場合、
つまり2次方程式の実数解が存在しない場合は、
元の2数が存在しないので、解を算出する前にチェックする必要があります。
[参考]2次方程式の解の公式
[ソース]
| |
[VB.NET]和と積から元の2数を算出する。 |
[.NET]Imageの分割 [Programming .NET Tips]
ファイルから取り込んだImageを複数に分割する機会があったので、
作ってみました。
[ポイント]
(1)Imageオブジェクトを指定した個数で分割します。
例:縦5個、横10個と指定すると、5×10の2次元配列でImageを作成します。
(2)Imageを分割するには、
Graphics.DrawImage(Image, Integer, Integer, Rectangle, GraphicsUnit)
を使います。
(3)参考文献
『MSDN Library for VisualStudio2008日本語版』
[ソース]
作ってみました。
[ポイント]
(1)Imageオブジェクトを指定した個数で分割します。
例:縦5個、横10個と指定すると、5×10の2次元配列でImageを作成します。
(2)Imageを分割するには、
Graphics.DrawImage(Image, Integer, Integer, Rectangle, GraphicsUnit)
を使います。
(3)参考文献
『MSDN Library for VisualStudio2008日本語版』
[ソース]
| |
[VB.NET]Imageを分割する例 |
| |
[C#]Imageを分割する例 |