【Python】PythonでGmailを送る

マクロでGmailを送信する方法は前にまとめましたが、同じくPythonでもGmailを送る要件が出てきたのでまとめました

API使うのが正攻法かもですがSMTPの方が楽なので今回はマクロの時と同じくSMTP版を紹介

目次

2段階承認プロセスを有効化

まずはGoogleアカウントページから”2 段階認証プロセス“ページへ

次ページで迷うことなく”2 段階認証プロセスを有効にする“を

はい、完了

ホームに戻るとそれらしき項目が変わったり増えたり

アプリパスワードを生成

続いてアプリパスワードをするためもう一度”2 段階認証プロセス“画面を開いて下部にある”アプリ パスワード“メニューから作成・・・

したい所ですが、いつの頃からか表示されなくなってしまいました・・・(アプリパスワードの設定がされていれば表示されます)

アプリ パスワードは推奨されておらず、ほとんどの場合は不要です。アカウントを安全に保つため、[Google でログイン] を使用してアプリを Google アカウントに接続してください。

とあるのでGoogle的には非推奨なのでしょうが、直リンクなら今でも開けるので↓↓から

https://myaccount.google.com/apppasswords

アプリ名“は適当な名前を設定して”作成“ボタンをクリック

無事16桁のパスワードが生成されました!

サンプルプログラム

早速↑↑で生成したパスワードを使ってプログラムを作ります

ちなみに、画面上のパスワードをコピーすると4文字毎にスペースがありますが、このスペースは残しても削除してもどちらでもOK

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

def send_gmail(mail_subject: str, mail_body: str, mail_to: str, mail_cc: str = '', file_path: str = ''):
    # アプリパスワードを生成したGoogleアカウント
    sendAddress = '**********@gmail.com'
    # 生成したアプリパスワード
    password = 'qwko ejar qsve jspg'

    # メール情報をセット
    msg = MIMEMultipart()
    msg['Subject'] = mail_subject
    msg['From'] = sendAddress
    msg['To'] = mail_to
    if mail_cc != '':
        msg['cc'] = mail_cc
    msg.attach(MIMEText(mail_body))

    # 添付ファイルがあれば
    if os.path.isfile(file_path) is True:
        # ファイル読込
        with open(file_path, 'rb') as f:
            attach = MIMEApplication(f.read())
        # ファイル添付
        attach.add_header('Content-Disposition', 'attachment', filename=file_path)
        msg.attach(attach)
    # SMTPサーバに接続
    smtp = smtplib.SMTP('smtp.gmail.com', 587)
    smtp.ehlo()
    smtp.starttls()
    smtp.login(sendAddress, password)
    # 作成したメールを送信
    smtp.send_message(msg)
    smtp.close()

※宛先が複数とか、添付ファイルが複数とか全く考慮していないので必要に応じて修正推奨です・・

あとがき

最近はLINEやChatwork、Teamsなどチャットツール向けに通知することが多いのですが、外部の個人が対企業向けに通知するには難しい場合があり、Gmailで通知する機会がありましてまとめてみました

途中にも書きましたがGoogle的には非推奨で、APIを使うべしなんでしょうが面倒で・・

SMTPはいつか完全に利用できなくなる日が訪れそうなのでその内APIを利用した送信方法もまとめたいです・・


最後に・・・

クラウドワークスココナラでお仕事受け付けています!

PythonとExcelを中心に仕事に役立つ業務ツールや自動化、スクレイピングツールの作成を受注していて、クラウドワークスでは気が付けば100件以上のお仕事を受注してきました!

会社員をやりながらの副業なので時間の捻出は相応ですが、クライアントの方々と近い立場でこちらからも提案しながら活動していますのでお悩みあれば是非ご相談ください

ココナラのプロフィールページへ

"ココナラ"に新規登録する際は1,000Pもらえる紹介コード使ってください

78E62K

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAとPythonを中心にユーザー側でできるITを自己学習しているので備忘録半分、学習履歴を残して同じ道を辿る人の参考になればとブログを始めました

副業でスクレイピングツール作成を中心にできることを色々やっていますのでご相談いただけるとありがたいです!


クラウドワークスのページへ


ココナラのページへ

コメント

コメントする

目次