メールをテキストファイルとして保存する

以前、メールをテキストファイルとして保存するアプリを作成しました。今回は送信です。メールを送るときに少しだけ変えて送ることはないでしょうか?

件名:佐藤さん、おはようございます
メール本文:やっぱり早起きは三文の徳です。佐藤さんも早寝早起きを実践しましょう。

件名:鈴木さん、おはようございます
メール本文:やっぱり早起きは三文の徳です。鈴木さんも早寝早起きを実践しましょう。

件名:高橋さん、おはようございます
メール本文:やっぱり早起きは三文の徳です。高橋さんも早寝早起きを実践しましょう。

サンプルなので内容ゼロのメールですが、このような少しだけ件名と内容が違う複数のメールを出すことはよくある話です。専用のメールアプリを使えばできそうなのですが、自分自身の勉強のためにつくってみました。

メール受信のときと同様に.NET用メール送受信クラスライブラリ (TKMP.DLL) を使います。

.NET用メール送受信クラスライブラリ (TKMP.DLL)

今回もYahooメールを使う前提でアプリを作成します。

以下の方法で送信することができます。ちょっとハマったのはメール本文のなかに改行があるときです。RichTextBoxの改行は”\n”ですが、メールを送るのであれば”\r\n”にしなければなりません。

ひな形になる元のメールの件名、本文を入力しておき、差し替えたい部分を”$$n$$”にしています。

件名:$$1$$さん、おはようございます
メール本文:やっぱり早起きは三文の徳です。$$1$$さんも早寝早起きを実践しましょう。

メールアドレスとの組み合わせで$$1$$を登録しておくとメールを複数送信することができます($$1$$~$$8$$まで登録可能)。ただしこれを悪用してスパムメールを送信することは絶対にしないでください。ツールは使い方次第で「善」にも「悪」にもなります。

まずメールアドレスと差し替えたい言葉をセットで扱うためのDataクラスを作成します。

[送信情報] ⇒ [追加]を選択するとリストボックスにアイテムが追加されます。また[送信情報] ⇒ [削除]を選択するとアイテムが削除されます。

選択されているアイテムが変更されるとテキストボックスに入力されている文字列がデータとして保存され、新しく選択されたアイテムに対応するデータが表示されます。

SaveOldData()はこれまで選択されていたアイテムのデータを保存するためのものです。LoadStringTextBoxes(Data data)はDataオブジェクトのなかからデータを読み出してテキストボックスに表示するためのメソッドです。またSaveStringTextBoxes(Data data)はDataオブジェクトのなかにテキストボックス内の文字列を保存するためのものです。

以下のメソッドはデータをファイルに保存したり、ファイルからデータを読み出すためのメソッドです。

そして[メールを送信する]をクリックするとリッチテキストボックス上の文字列が一部置き換えられてメールとして送る文字列が生成されます。これとメールアドレスが組み合わされてSendMailsメソッドが呼び出されます。MailInfoクラスはメールアドレスとメールの件名、メール本文を管理するためのクラスです。

最後に作成された件名と本文でメールを送信します。