PR

Pythonを使って業務を自動化してみよう – メール自動化編

※当サイトはアフィリエイト広告を利用しています

プログラミング

今回は社内でよくある確認メールをPythonを使って自動化する方法についてお話しします。
毎月毎週、同じような内容のメールを送信している情シスの方も多いのではないでしょうか?
そんな時Pythonを使えば手間を大幅に削減できます。
退屈な作業を自動化してみましょう。

スポンサーリンク

処理の流れを解説

テキストファイルを読み込む

まずはテキストファイルを読み込む方法から練習を始めましょう。
Pythonでは簡単なコードでファイルの読み書きができます。
例えば、以下のようにしてテキストファイルを読み込むことができます。
事前に テストファイル.txt という名前のテキストファイルを作成しておいてください。

with open('テストファイル.txt', 'r', encoding='utf-8') as file:
    content = file.read()

簡単ですね。
このコードを使えば、指定したテキストファイルの内容を変数(content)に読み込むことができます。

メールを送る

次にPythonを使ったメールの送り方を紹介します。
smtplibモジュールを使用することで簡単にメール送信ができます。
以下はその一例です。
SMTPサーバーや利用するポート、プロトコル、メールアドレス等は社内の環境に合わせてください。
なお、こういったテストをする際はその旨を他の情シスメンバーと必ず共有しましょう。
想定外の事象が起きた際の対応が変わってくるかと思います。

import smtplib
from email.mime.text import MIMEText

# メール設定
subject = '確認メール'
body = 'これはPythonで送信したメールです。'
to_email = '相手のメールアドレス@example.com'
from_email = '自分のメールアドレス@example.com'

# メール本文の設定
message = MIMEText(body)
message['Subject'] = subject
message['From'] = from_email
message['To'] = to_email

# メールサーバに接続してメール送信
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(from_email, 'パスワード')
server.send_message(message)
server.quit()

テキストファイルの内容を取り込んでメールで送信する

最後に上の例で読み込んだテキストファイルの内容をメールの本文として送信する方法をご紹介します。
前述のテキストファイル読み込みのコードを組み合わせることで簡単に実現できます。

import smtplib
from email.mime.text import MIMEText

# テキストファイル読み込み
with open('テストファイル.txt', 'r', encoding='utf-8') as file:
    content = file.read()

# メール設定
subject = '確認メール'
to_email = '相手のメールアドレス@example.com'
from_email = '自分のメールアドレス@example.com'

# メール本文の設定
message = MIMEText(content)
message['Subject'] = subject
message['From'] = from_email
message['To'] = to_email

# メールサーバに接続してメール送信
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(from_email, 'パスワード')
server.send_message(message)
server.quit()

これでPythonを使って確認メールの自動送信ができるようになりました。
ただし気をつけなければならない点もありますので以下に注意事項をいくつか挙げておきます。

スポンサーリンク

スポンサーリンク

注意事項

セキュリティの確保

メールアカウントやパスワードなどの情報を含むスクリプトを適切に管理し不正アクセスから情報を守りましょう。
特にプログラム内に平文でパスワードを保存するのは避けましょう。

送信先の確認

テスト環境での確認を怠らず実際の業務に適用する前に正確な送信先を確認しましょう。
間違って社内の情報を関係会社や取引先に送ってしまうと信用問題にかかわります。
そのようなトラブルを避けるためにも事前の確認は重要です。

自動送信のスケジュール

業務の進行に合わせて適切なスケジュールを設定し無駄なメールの送信を避けましょう。

チームへの周知

社内のチームメンバーにこのような自動化をしていることを周知することが必要です。
自動化プログラムの存在を誰も把握していないのはあまり良い状況ではありません。
万が一に備える意味でチームのメンバーには周知をし、可能な限りドキュメントも共有しておくべきでしょう。
このようなポイントに気をつけながらPythonを活用して業務を効率的に自動化していくことが大切です。

まとめ

今回はPythonを使用して確認メールの自動送信についてご紹介しました。
プログラムの例ではテストファイル.txtの内容については触れませんでしたが、中身にも少し工夫が必要です。
せっかくメール送信を自動化したのにファイルの作成や修正に時間がかかるのでは本末転倒ですのでここのメンテナンスも最小限の手間で済むようにしたいところです。
手動で繰り返し行っていた業務を自動化することで時間の節約や誤りの回避が期待できます。
是非これを機にPythonの力を仕事に活かし、より効率的な業務運営を目指してみてください。

コメント

  1. より:

    プログラミング初学者です。
    平文にパスワードを保存しない場合ってどうすればいいんでしょうか。
    ここの例ではメソッドの引数に文字列リテラルで直接入力していますが、これも平文ってことになりますよね?
    クラスのプライベート属性やプライベートメソッドのローカル変数でも危ないってことですよね?
    お教え下さると助かります。よろしくお願いします。

    • 情シス先輩 情シス先輩 より:

      梶様

      コメントありがとうございます。

      >ここの例ではメソッドの引数に文字列リテラルで直接入力していますが、これも平文ってことになりますよね?
      はい。
      ご指摘の通り、例文では平文で保存しているので、セキュリティ的には本番環境では推奨できない書き方になっています。
      メールを送れるようになってみる、という点を第一に考えそのような書き方をしてます。

      >平文にパスワードを保存しない場合ってどうすればいいんでしょうか。

      >クラスのプライベート属性やプライベートメソッドのローカル変数でも危ないってことですよね?
      こちらへの回答は具体的にどのような書き方を想定しているか、や、どのような脅威を想定しているか、で変わってくるような気がします。
      例えばですが、同じプログラムファイル内で完結するようなクラスや変数の使い方を考えているならば避けた方が良いと思います。
      記事で紹介した自動化プログラムで最低限避けて欲しいのは、本番環境のパスワードを平文で書いたプログラムを外部の方に渡してしまい、結果的にパスワードを流出させてしまった、というような、うっかりミスからの重大なセキュリティ事故です。
      (「ハードコード、パスワード、流出」などで調べていただくと、具体的な例がたくさん出てきますのでここでは割愛させていただきます。)

      プログラム内にパスワードを平文で残さないためには、例えば、プログラム内で別のファイルからパスワードを読み込み利用する、という手法をとれば万が一プログラム本体が外部へ出てしまってもパスワードは漏れません。
      読み込むファイルや文字列を暗号化しておき、プログラムで複合化するという方法もあります。

      ただ、もし自分以外の悪意のある人にプログラムやその周りのファイル類を見られてしまったら…?といった事態を考えておられるならば、それは本記事とは少し外れた内容になり、別の手段や別のレイヤーで防ぐしかないです。
      他にもセキュリティの観点でよく見れば、通信の暗号化ですとか、プログラムを動作させる環境ですとか色々と検討すべき事柄もありますが割愛してしまっています。
      その辺に関してはまたいずれ別の記事で書いてみたいと思います。

      以上、梶様の参考になれば幸いです。

タイトルとURLをコピーしました