メール送信スクリプト

新たに設定したCentOSもそうですが、メールのデーモンはインストールしていません。しかし、メールを介した通知は必要なので、スクリプトを使って送信しています。昔のUNIXには必ず設定したのですが、今は危なくて設定できません。

今の派遣先では、Microsoftのメールサービスを使っているので、そのSMTPサーバーに送信していますがちょっとクセがあるのが難点。スクリプトでやるとして、何を使うかは、以前、チェック済み。偶然、CentOS 7で追加インストール無しで使えたのがpythonだったので、今でもそれを利用しています。

CentOS 8では、pythonのバージョンが上がって、スクリプトの変更が必要なシステムもありますが、メール送信用のスクリプトはそのまま動作したので、新しいサーバーでも流用しました。

使っているのは、こんなのです。

#!/usr/bin/python3
#
# SendMail to  Office356 (smtp.office365.com) mail script
#

import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

from_address = 'Outlook認証用のアカウント兼メールアドレス'
password = 'SMTP認証用のパスワード'
to_address = [
'送信先のメールアドレス'
]
subject = 'SenMail to Office365 (TEST)'
filename = "メールで送信するファイル(logwatchの結果を送信)"

with open(filename) as f:
    strs = f.read()
f.close()

msg = MIMEText(strs)
msg['Subject'] = subject
msg['From'] = from_address
msg['To'] = ",".join(to_address)
msg['Date'] = formatdate()

smtpobj = smtplib.SMTP('smtp.office365.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(from_address, password)
smtpobj.sendmail(from_address, to_address, msg.as_string())
smtpobj.close()

ネットでいろいろ検索して作ったのですが、どのページを参考にしたかは、メモを残していなかったので解らなくなりました。