Python:コマンドラインからGmailを送信する

Python:コマンドラインからGmailを送信する プログラム

Pythonを使ってコマンドラインからGmail送信できたら面白いかなぁ、という気持ちで作成。
上のカクカクした動画は実際にWindows10のコマンドプロンプト上で実行したときのイメージだ。
送信後、宛先に指定したメールをチェックしたらきちんと送信されていた。

Python:コマンドラインからGmailを送信する

Googleアカウントのセキュリティ設定のこと

ただし、今回の方法はわたしがラズベリーパイからGmail送信などで使っている方法で、Googleアカウントのセキュリティ設定を下げて使う必要がある。
実際には、「安全性の低いアプリへのアクセスの無効化」を許可する必要がある。許可するとメールアドレスとパスワードが相手に知られた場合、勝手にメール送受信がされてしまう。ちゃんとしたGmail送信をしたい方は、Google APIsでGmailへのアクセス許可APIを設定するなどした方がいい、と断っておく。

という訳で、今回のPythonソースコードは、Googleアカウントのセキュリティ設定を下げて使ってください。

Googleアカウントのセキュリティ設定を下げる方法は、以下の記事参考

コマンドラインからGmail送信ソースコード

宛先メールアドレス(To)、件名(Subject)、本文(Body)の順にキーボードから入力するだけ。エンターキーで入力確定なので本文内に改行が出来ないが、とりあえず送信するには問題ない。(というか本文内で改行したかったのだが、全角文字だとうまくいかなかったので割愛)

コードの修正が必要な箇所は、25行目と26行目。お使いのGmailアドレスGmailパスワードにそれぞれ置き換えてください。

sendGmail.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
	コマンドラインからGmailを送信する

		【動作確認環境】
			コマンドライン環境/Windows10のコマンドプロンプト上
			Python/バージョン 3.7.3

"""

# メール送信のためのSMTPセッションクライアントを作成するため
import smtplib

# メールの送信日付をインターネットで送信できるフォーマットで指定するため
from email.utils import formatdate

# メール本文に日本語を送信できるようにするためのMIME規格に変換するため(E-mailも基本は英語圏でできた規格なのです!)
from email.mime.text import MIMEText

if __name__ == "__main__":

	# Gmailアカウント設定
	gmail_addr = "《あなたのGmailアドレス》"
	gmail_pass = "《あなたのGmailパスワード》"
	SMTP = "smtp.gmail.com"
	PORT = 587

	# 送信メール情報
	from_addr = gmail_addr					# 送信元メールアドレス(Gmailでなくてもよい)

	# キーボードから宛先、件名、本文の順に入力
	print("\n")
	print("To: ", end="")
	to_addr = input()				# 宛先

	print("Subject: ", end="")
	subject = input()					# 件名

	print("Body: ", end="")
	body = input()					# 本文

	# メールメッセージを作成
	msg = MIMEText(body)				# 日本語で送信するためにISO-2022-JPを指定
	msg["From"] = from_addr
	msg["To"] = to_addr
	msg["Date"] = formatdate()		# 日付をインターネットで送信できるフォーマットで指定
	msg["Subject"] = subject

	# メール送信
	try:
		print("\nメール送信中...")
		send = smtplib.SMTP(SMTP, PORT)				# GmailのSMTPを利用してSMTPオブジェクトを生成
		send.ehlo()
		send.starttls()
		send.ehlo()
		send.login(gmail_addr, gmail_pass)				# Gmailにログイン
		send.send_message(msg)							# メールを送信
		send.close()
	except Exception as e:
		print(str(e))										# エラー送出時のメッセージ表示
	else:
		print("{0}へメール送信したよ!".format(to_addr))	# メールが正常に送信されたときのメッセージ

これなら仕事中にブラウザ以外でGmail送信ができるので、Gmailを使っている風には傍目には見えないぞ、という感じ。(失礼!そういう問題ではない)

コメント

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