Python

【初心者向け】Pythonでgmailを送信する方法【図解あり】

【初心者向け】Pythonでgmailを送信する方法【図解あり】

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

いきなりですが、

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

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

雑務を減らしたい!

と思ってはいませんか?

今回の記事は、Pythonを使ってgmailを送信する方法を解説していきます。

この記事を読めば、形式的なメールを送るわずらわしさから解放されることでしょう!

それでは本文をどうぞ。

悩んでいる人
悩んでいる人

定期的にメールを送信しないといけないんだけど、めんどくさいな。

LINE公式みたいに手軽に送信できればいいのになあ。

さすを
さすを

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

この記事のおすすめ対象読者:

  • 仕事のメール連絡を減らしたい人
  • 形式的なメールを辞めたい人
  • 雑務を減らしたい人

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

Pythonを使ってgmailの送信を行う方法

筆者の情報:

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

注意:

  • この記事は、Windowsをもとに説明しています。Macの方は、操作が異なる可能性があります、ご承知ください。
  • 送りたいデータが25MBを超えるときは、この方法は使えません。

※0円のサンプルテキストという近道
独学よりプログラミングスクールの方が効果は出やすいですが、値段が高く、なかなか手を出しづらいですよね。techgymでは無料のサンプルテキストをもらえるので、これを使ってPythonの基礎を学ぶのもありだと思います。

>>techgymの無料サンプルテキストはこちらから

スポンサーリンク

1.Pythonでgmailを送信する方法

1.Pythonでgmailを送信する方法

Pythonを使ってgmailを送信するための手順は以下の2ステップです。

  1. Googleアカウントの設定をする
  2. プログラムをつくる
さすを
さすを

それでは始めていきましょう!

1-1.Googleアカウントの設定をする

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

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

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

また、Pythonからメール送信を行うには、「2要素認証」というセキュリティを解除しなくてはなりません。

今使っているアカウントをお持ちでも、「万が一何かあったら困る、、」という方はPythonメール送信用にアカウントを作成しておくのがおすすめです。

さすを
さすを

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

Googleアカウントの準備ができたら、セキュリティを変更していきます。

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

  • 「2段階認証プロセス」をオフにする
  • 「安全性の低いアプリの許可」を「有効」に設定する

「2段階認証プロセス」をオフにする

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

図1:「2段階プロセス」をオフにする手順(1)
図1:「2段階プロセス」をオフにする手順(1)

「セキュリティ」タブを押します。

図2:「2段階プロセス」をオフにする手順(2)
図2:「2段階プロセス」をオフにする手順(2)

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

図3:「2段階プロセス」をオフにする手順(3)
図3:「2段階プロセス」をオフにする手順(3)

「オフにする」を押します。

図4:「2段階プロセス」をオフにする手順(4)
図4:「2段階プロセス」をオフにする手順(4)

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

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

図5:「安全性の低いアプリの許可」を「有効」に設定する(1)
図5:「安全性の低いアプリの許可」を「有効」に設定する(1)

「セキュリティ」タブを押します。

図6:「安全性の低いアプリの許可」を「有効」に設定する(2)
図6:「安全性の低いアプリの許可」を「有効」に設定する(2)

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

図7:「安全性の低いアプリの許可」を「有効」に設定する(3)
図7:「安全性の低いアプリの許可」を「有効」に設定する(3)

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

図8:「安全性の低いアプリの許可」を「有効」に設定する(4)
図8:「安全性の低いアプリの許可」を「有効」に設定する(4)

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

さすを
さすを

Googleの設定はこれでOKです!

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

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

添付ファイルがない場合

#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("処理が終了しました。")

添付ファイルがある場合

#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("処理が終了しました。")
さすを
さすを

これで送信できる準備は整いました!

1-3.送信・受信できているかの確認

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

検索欄に「cmd」と入力し、コマンドプロンプトを開きます。

図9:gmail送信確認(1)
図9:gmail送信確認(1)

Pythonスクリプトを実行します。

図10: gmail送信確認(2)
図10: gmail送信確認(2)
さすを
さすを

実行結果はこちらです!

図11: gmail送信確認(3)
図11: gmail送信確認(3)
図12:gmail受信確認(1) [添付ファイルなし]
図12:gmail受信確認(1) [添付ファイルなし]
図13:gmail受信確認(2) [添付ファイルあり]
図13:gmail受信確認(2) [添付ファイルあり]
さすを
さすを

無事にメール送信できていました!

2.Pythonを使ってgmailを送信するときの注意点

2.Pythonを使ってgmailを送信するときの注意点

Pythonを使ってgmailを送信するときに注意しなくてはいけないことがあります。

それは、「連続でメールを送信する場合には、一定の待ち時間を入れる」ということです。

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

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

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

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

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

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

#1行目:
import time
#『print("送信完了しました。")』の下の行:
time.sleep(2)
さすを
さすを

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

2-1.添付ファイルが25MBを越えて送信できない場合

添付ファイルが25MBを越えて送信できない時は、Googleドライブで共有すれば大丈夫です。

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

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

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

2-2.エラー続きで挫折しそうなとき

Pythonスキルを習得するためには、正しい学習方法で学ぶことが大切です。

あなたにあった学習方法で、スキルアップを目指してがんばってください。

独学編:

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

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

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

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

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

スクール編:

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

独学でやるよりもスクールに通った方が、圧倒的に速いスピードでスキルを習得することができます。

値段は独学よりも高くなりますが、エンジニアになれば、受講料は1か月で回収できるので、問題なしです。

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

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

最後に:無駄な時間を減らして人生をより良くしよう

Pythonを使ってgmailを送信する方法を詳しく解説してきました。

毎日のちょっとした無駄をなくすことができれば、あなたの人生はより充実したものになります。

形式的なメールはPythonにお願いして、空いた時間でコーヒーでも飲んで休憩しちゃいましょう!

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

それでは!

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

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

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


コメント

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