プログラムpythonでOutlookのテンプレートメールをテキストファイルから作成する方法2019/11/17最近はなにかと仕事関係でメールを送ることが多いので、メールのテンプレートを作成して時短していこうとしています。以前の記事で紹介したのと少しバージョンが異なるものとなりますが、汎用性が高いためご紹介しておきます。今回はテキストファイル(txt)を読み込み、メールのテンプレートを作成していきます。テキストファイルを変更すればテンプレートも変更になるため使い勝手が良くなります。今回のやり方を学ぶことで複数のテンプレートメールを作成したり、複数の人にその人に合ったメールを作成することもできるようになります。一通りのプログラムの紹介。#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。os.path.basename(txt_file_path)#sample.txt#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。メール送信mailCreate.Send()以下に解説していきます。テキストファイル(txt)の作成まずメールのテンプレートにするためのtxtファイルを作成しておきましょう。今回は簡単にファイル名をsampleにして、本文を以下のようにしました。簡単なもので良いのでtxtファイルを作成してみてください。txtの読み込みとEncodigの問題まずtxtファイルのpathを指定していきます。これはpathさえ変えてしまえば、メールの本文を簡単に変えることができるためいちいちプログラムをいじらなくてもいいというメリットがあります。r'C:\Users\user\sample.txt'テキストのファイルを指定したら、テキストファイルの本文を読み込みます。テキストファイルの本文はメールの本文に使用します。本文の一部を変えたいときなどもあると思います。その時に有効なのが、特定の文字列をtxtにあらかじめ仕込んでおき、置換してしまうのが割と楽にできる作業になります。下記の一部では"--URL"を置換しています。f.replace('--URL',r'http://wheelchairtext.net/')またtxtファイルを読み込み、別ファイルに書き込みするときに起こりやすいのが、Encodingの問題です。Macであれば”utf_8”でいいのだが、windowsだとencodingが”utf-8_sig”にしておかないと下記のようなエラーが出る。sequenceこれは、csvに出力する際やExcelに出力するときに文字化けやエラーが発生しやすい問題なので覚えておいたほうがいいでしょう。送り先のメールアドレス通常で送りたい場合であれば、Toで送りましょう。'hoga@gmail.com'複数送りたい場合や、CC・BCCなどは下記を使いましょう。件名はtxtファイル名を使用しましょう。することで、いちいち件名を変更しなくて済むことになり、汎用性が高くなります。pathからファイル名を取得するにはos.path.basenameを使用する必要があります。os.path.basenameは拡張子を含めて返されるため、os.path.splitextで区切る必要があります。os.path.splitextは分解してタプル型で返すため、[0]番目の要素を指定するとsampleという文字が返ってきます。#拡張子を外してファイル名を件名に入れたいのでsplitextで分解。この時にタプル型になります。os.path.basename(txt_file_path)#sample.txt#拡張子を外してファイル名を件名に入れたいのでsplitextで分解。この時にタプル型になります。先程作成したbodyReplaceをメールの本文に追加します。その後メールを送信します。メール送信mailCreate.Send()同じ人に複数の別のテンプレートメールを送信する複数のテンプレートを送るようなプログラムを作成します。#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。os.path.basename(file_path)#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。txt_file_path:mailSend(file_path)以下に解説していきます。先程作成したsmaple.txtとは別のsample2.txtを作成しておきます。今回はテキストファイルの本文の名前を変更していますが、本文を変更してもらっても構いません。複数のテキストファイルのパスを追加txt_file_pathをリスト型にしてファイルのパスを追加します。最初に使用したsample.txtとsample2.txtのファイルパスをリストに追加しておきます。[r'C:\Users\user\sample.txt',r'C:\Users\user\sample2.txt']def文で関数としてまとめるメールを送る処理を関数としてまとめます。メールを送る処理は同じため、違うのはテキストのファイルパスのみになります。#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。os.path.basename(file_path)#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。メール送信mailCreate.Send()returnfor文でループして関数を呼び出し送るfor文でループしてリストに入っているtxt_file_pathをfile_pathに格納して、先程の関数を呼び出し、メールを作成して送ります。txt_file_path:mailSend(file_path)こうすることで複数のテンプレートを作成でき便利になります。複数の人に別のテンプレートメールを送るあと、良く使う機能だと複数の人ごとに別テンプレートを作成する場合ですね。これもdictionary型を上手く使って対処できます。#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。os.path.basename(file_path)#拡張子を外して件名に入れたいのでsplitextで分解。この時にタプル型になります。txt_file_path.items():mailSend(mail_address,file_path)上記で重要なのが、mail_addressとfile_pathの2種類を渡して、関数を呼び出している点です。詳しく説明していきましょう。dict型(辞書型)について例えば下記の例であると、mail_addressがkeyとなり、file_pathがvalueとなります。メールアドレスとメールのテンプレートをセットにしておくことで間違いがしづらくなります。r'C:\Users\user\sample2.txt'}for文でdictionary型を分解dictionary型は、keyとvalueに分かれています。それをfor文でmail_addressとfile_pathに分解。txt_file_path.items():mailSend(mail_address,file_path)分解した値をmailSend関数に渡してメールを送ります。まとめ割と簡単にできるメールのテンプレートの作り方と複数の人にメールを送るやり方の紹介です。送る相手やテンプレートが多くなってきた場合は、上記のようなリストやdictを使わず、csvファイルを作成してみるともっと管理がしやすく応用ができるようになります。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。使う機能でGmailをpythonで動かすことがある。車いすの自分が困ったことや役立ったことなどを紹介。最近はプログラミングをしていることが多いので、プログラミングに関することも紹介しています。現在は某有名外資系企業でデータ分析やプログラミングを使用した自動化をしています。いろんな面で助けることができれば嬉しいです。使う機能でGmailをpythonで動かすことがある。車いすで自宅や室内での移動は部屋が汚れてしまい掃除も大変。...3車椅子でも行ける猫カフェ「猫カフェきゃらふ」がオススメ今回は車椅子でも行ける猫カフェに行ってきたのでご紹介。...4外でも使える充電できるタイプの車いす電動空気入れ今回は電動空気入れの紹介。今回は三郷にある漫画喫茶快活クラブ三郷に行ってみました。