Python

【画像を使ってわかりやすく解説!】Pythonを使って自動でメール送信する方法【gmail編】

こんにちは、さすを(@sasuwo0409)です。

プログラムで異常が起こった時の通知メールを送るのがめんどくさい!

定期的なメール連絡がめんどくさい!

形式的なメールは自動化したい!

と思ったことはありませんか?

今回の記事は、そんな悩みを解決するPythonを使って自動でgmailのメール送信を行う方法を図を使ってわかりやすく説明します。

この記事を読めば、形式メールを送るわずらわしさから解放されます!

それでは本文をどうぞ。

自動でメール送信したい人
自動でメール送信したい人

定期的にメールを送信しなくてはいけないんだけど、めんどくさいのよね、、

内容もほとんど同じものばかりだし、、。

LINEの公式みたいに自動で送信できればいいのにな、、。

さすを
さすを

これらの悩みを解決します!

この記事を読むとわかること:

Pythonを使って自動でgmailのメール送信を行う方法

筆者の情報:

  • 現役システムエンジニア 兼 副業ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっていることは本屋で立ち読み

注意:

  • この記事は、Windowsをもとに説明しています。Macの方は、多少操作感が違うと思いますが、ご承知ください。
  • 送りたいデータが25MBを超えるときは、この方法は使えません。
さすを
さすを

Pythonのインストールが終わっていない方は、まずは以下のサイトからインストールをおこなってください!

Pythonのインストール:

Windowsの方:
>>【Windows版】Pythonのインストール方法【画像を使ってわかりやすく解説】

Macの方:
>>MacにPythonをインストールする3つの方法!それぞれの利点と手順を紹介

スポンサーリンク

1.Pythonを使って自動でメール送信する方法【gmail編】

1.Pythonを使って自動でメール送信する方法【gmail編】

Pythonを使ってPythonを使って自動でgmailのメール送信を行うための手順は以下の3ステップです。

  1. Googleアカウントを作成する
  2. Googleアカウントでセキュリティを設定する
  3. プログラムをつくる

1-1.Googleアカウントを作成する

Pythonを使って自動でgmailのメール送信を行うためには、Googleアカウントが必要です。

Googleアカウントがない方は、作成しましょう。

>>gmailアカウントを作成する

今使っているアカウントをお持ちでも、「万が一何かあったら困る、、」という方は自動メール用にアカウントを作成しておきましょう。

さすを
さすを

僕も不安だったので、新アカウントをつくりました!

1-2.Googleアカウントでセキュリティを設定する

Pythonを使って自動でgmailのメール送信を行うためには、セキュリティを変更する必要があります。

変更箇所は以下の2つです。

  • 2要素認証の解除
  • 「安全性の低いアプリの許可」を「有効」に設定

1-2-1.2要素認証の解除

1.Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す。

Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す
Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す

2.セキュリティタブを押す。

セキュリティタブを押す
セキュリティタブを押す

3.「Googleへのログイン」の2段階認証プロセスを押す。

「Googleへのログイン」の2段階認証プロセスを押す
「Googleへのログイン」の2段階認証プロセスを押す

4.オフにするを押す。

オフにするを押す
オフにするを押す

1-2-2.「安全性の低いアプリの許可」を「有効」に設定

1.Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す。

Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す
Googleアカウントのアイコンを押し、「Googleアカウントを管理」ボタンを押す

2.セキュリティタブを押す。

セキュリティタブを押す
セキュリティタブを押す

3.「安全性の低いアプリのアクセス」のアクセスを有効にする(非推奨)を押す。

「安全性の低いアプリのアクセス」のアクセスを有効にする(非推奨)を押す
「安全性の低いアプリのアクセス」のアクセスを有効にする(非推奨)を押す

4.「安全性の低いアプリの許可」を有効にする。

「安全性の低いアプリの許可」を有効にする
「安全性の低いアプリの許可」を有効にする

「2要素認証の解除」「安全性の低いアプリの許可の有効」をすると、アカウントのセキュリティが甘くなるので不正ログインなどの危険性が高まります。
口座情報が登録されていたり、重要なメールのやり取りをしている場合は別アカウントをつくることをおすすめします。

1-3.プログラムをつくる

Googleアカウントの作成と設定の変更が完了したので、ここからはプログラムをつくっていきましょう。

といっても一部内容を修正すればOKです。

さすを
さすを

プログラムを書くソースコードエディタがない方は、以下からインストールしましょう!

Windowsの方:
>>ソースコードエディタ(VSCode)のインストール方法[Windows版]

Macの方:
>>ソースコードエディタ(VSCode)のインストール方法[Mac版]

1-3-1.添付ファイルがない場合

send_gmail.py:

import smtplib
import ssl
from email.mime.text import MIMEText


try:

    #自分のgmailアドレス
    gmail_account = "xxxxxxxxxx@gmail.com"

  #自分のGoogleアカウントのパスワード
    gmail_password = "xxxxxxxxxx"

    #メールの送信先
    mail_to = "xxxxxxxxxx@gmail.com"

    #メールデータ(MIME)の作成

    #件名
    subject = "ここに件名を入力します。"

    #本文
    body = "ここに本文を入力します。"

    msg = MIMEText(body, "html")
    msg["Subject"] = subject
    msg["To"] = mail_to
    msg["From"] = gmail_account
    
    #Gmailに接続
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465,
    context=ssl.create_default_context())
    server.login(gmail_account, gmail_password)
    server.send_message(msg) # メールの送信
    print("送信完了しました。")

except Exception as e:
    print(e)

finally:
    print("処理が終了しました。")

修正箇所:

  • 自分のgmailアドレス
  • 自分のGoogleアカウントのパスワード
  • メールの送信先
  • 件名
  • 本文

1-3-2.添付ファイルがある場合

send_gmail_attachment.py:

import smtplib
import ssl
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email import encoders

try:

    #自分のgmailアドレス
    gmail_account = "xxxxxxxxxx@gmail.com"


  #自分のGoogleアカウントのパスワード
    gmail_password = "xxxxxxxxxx"

    #メールの送信先
    mail_to = "xxxxxxxxxx@gmail.com"
    #添付ファイルのパス(ZIPファイルで指定)
    file_path = "xxxxxxxxxx\\xxxxxxxxxx\\xxxxx.zip"

    #メールデータ(MIME)の作成

    #件名
    subject = "ここに件名を入力します。"

    #本文
    body = "ここに本文を入力します。"

    encoding = 'utf-8'
    msg = MIMEMultipart()
    msg["Subject"] = Header(subject, encoding)
    msg["To"] = mail_to
    msg["From"] = gmail_account
    msg.attach(MIMEText(body, 'plain', encoding))
    
    #添付ファイル(ZIP)をメールに追加
    attach = MIMEBase('application','zip')
    with open(file_path, "br") as f:
        attach.set_payload(f.read())
        encoders.encode_base64(attach)
        attach.add_header('Content-Disposition', 'attachment',
        filename='attachment.zip')
        msg.attach(attach)

    #gmailに接続
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465,
    context=ssl.create_default_context())
    server.login(gmail_account, gmail_password)
    server.send_message(msg) # メールの送信
    server.quit()
    print("送信完了しました。")

except Exception as e:
    print(e)

finally:
    print("処理が終了しました。")

修正箇所:

  • 自分のgmailアドレス
  • 自分のGoogleアカウントのパスワード
  • メールの送信先
  • 添付ファイルのパス(zip形式)
  • 件名
  • 本文
さすを
さすを

これで準備はOKです!

2.Pythonを使って自動でメール送信できているか確認しよう

それでは、ターミナルを開いてPythonを使って自動でメール送信できているか確認しましょう。

2-1.添付ファイルがない場合

1.検索欄に「cmd」と入力し、コマンドプロンプトを選択する。

検索欄に「cmd」と入力し、コマンドプロンプトを選択する
検索欄に「cmd」と入力し、コマンドプロンプトを選択する

2.Pythonスクリプトを実行する。

Pythonスクリプトを実行
Pythonスクリプトを実行

実行結果:

実行結果
実行結果

受信ボックス:

受信ボックス
受信ボックス

2-2.添付ファイルがある場合

1.検索欄に「cmd」と入力し、コマンドプロンプトを選択する。

検索欄に「cmd」と入力し、コマンドプロンプトを選択する
検索欄に「cmd」と入力し、コマンドプロンプトを選択する

2.Pythonスクリプトを実行する。

Pythonスクリプトを実行
Pythonスクリプトを実行

実行結果:

実行結果
実行結果

受信ボックス:

受信ボックス
受信ボックス
さすを
さすを

どちらもメール送信できていました!

3.添付ファイルが25MBを越えて送信できない時の対処法

添付ファイルが25MBを越えて送信できない時は、Googleドライブで共有するのが一番簡単です。

>>Googleドライブで共有、共同編集する

また、どうしてもGmailに添付して送りたい場合は、送信したい添付ファイルをGoogleドライブに上げてからGmailに添付すればOKです。

Googleドライブにあるドキュメントや写真の場合、ファイルサイズが25MBを越えていても添付することができます。

>>Google ドライブのファイルを Gmail に添付する

4.Pythonを使って自動でメール送信するときの注意点

Pythonを使って自動でメールを送るときの注意点は、連続でメールを送信する場合には、一定の待ち時間を入れる必要があるということです。

短時間に連続してメールを送信すると、Google側でスパムの大量送信と間違われる可能性があり、メールが受信側に届かなくなることがあります。

Gmail の効率性とアカウントの安全性を維持するために、ユーザーが受信できるメール数には上限が設けられています。
上限に達したアカウントでは新しいメールを受信できなくなります。また、検索速度が遅くなるなど、アカウントの全般的な問題が発生する場合があります。新たに届くメールはすべて送信者に返送されます。

Google Workspace における Gmail の受信制限

Gmailのユーザーが受信できるメール数の上限は以下の通りです。(2021年6月13日現在)

1分あたり60
1時間あたり3,600
1日あたり86,400
サイズ制限最大50MB
添付ファイルの制限1件のメール受信で500個まで

一定の待ち時間を入れるには、以下のコードを入れてあげればOKです。

1行目:

import time

『print(“送信完了しました。”)』の下の行:

time.sleep(2)
さすを
さすを

time.sleepのかっこの中は、待ち時間の秒数なので2より大きい数字ならOKです!

5.Pythonスキルを伸ばす方法とは?

5-1.独学編

Pythonスキルを独学で身に着けるためには、参考書が必須です。

おすすめのPython書籍を以下の記事で解説したので、参考にしていただけたらと思います。

>>【レベル別&徹底解説】 Python書籍のおすすめ8選

本を買う前に、一度Pythonの学習をしてみたいという方は、Pythonを学べるおすすめ学習サイトを以下の記事で解説したので、こちらも参考にしてみてください。

>>【料金別&徹底解説】 Pythonおすすめ勉強サイト8選【楽しく学ぼう】

5-2.スクール編

お金がかかってもいいから、少しでも早くPythonスキルを身につけたい方は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。

エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。

本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

6.終わりに

6.終わりに

ここまで、Pythonを使って自動でgmailのメール送信を行う方法を詳しく説明してきました。

記事の方法を実践することで、めんどくさい形式メールを送るわずらわしさから解放されます!

Pythonプログラムから自動でメールを送ってもらい、空いた時間でコーヒーでも飲んで休憩しちゃいましょう!

この記事が少しでも役に立っていたらうれしいです!

それでは!

>>【無料】Pythonでできること9選【初心者でも稼げます】

>>【徹底解説】Pythonエンジニアに転職する方法【失敗しない方法を詳しく解説】

>>【これだけ知っておけばOKです】 現役エンジニアもよく使う便利なPythonライブラリ22選


コメント

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