Python Udemy Gmail送信

Python学習【365日チャレンジ!】131日目のマスターU(@Udemy11)です。

以前カエルの鳴き声の話をしましたが、あいも変わらずカエルの大合唱が続いています。

ほんと、一つの田んぼにどれだけのカエルが生息してるんでしょうね。

そういえば、少し前にアフリカで大量発生したバッタの群れが、農作物を食い荒らしながらインドあたりまで到達していて、空港に押し寄せるバッタの群れのせいで、飛行機を飛ばすことができないというニュースがありました。

アフリカでは、バッタの大量発生は農作物に大打撃を与えるので、バッタの大量発生の初期対応が非常に重要だそうです。
地域の変化を人の目でチェックしているそうですが、地域が広大すぎて人間の目が届かないところから発生すると初期対応ができずに大量発生に繋がります。

一度大量発生してしまうと、対処法がなく、自然消滅するのを待つしかないそうです。

ほんと自然のチカラって恐ろしいですね。

それでは、今日もPython学習をはじめましょう!

昨日の復習

昨日は、PythonからOutlookメールを使ってE-mailを送信する方法ついて学習しました。

Outlookメールを使う場合もHotmailを使う場合も設定内容は同じですが、すでに運用しているアカウントではなく、取得したばかりのOutlookアカウントの場合、先に電話認証をしておく必要がありました。

基本の設定は、ホスト、ポート、ユーザー名とパスワード、送信先アドレスと送信元アドレスが必要で、emailライブラリのmessageモジュールに情報を代入して、smtpモジュールでサーバーにアクセスしてメールを送信しました。

詳しくは昨日の記事をごらんください。

今日は、フリーメールの代表であるGmailでメッセージを送信してみます。

Gmailの設定

Gmailはセキュリティーが厳しいので、最初にアカウントの設定でセキュリティーを下げておく必要があります。

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

Gmailはセキュリティーが年々厳しくなっていて、2段階認証プロセスを使用するようにとのメッセージが送られてくることがあります。

もちろん、2段階認証で乗っ取りを防ぐことはできるのですが、個人的には、そこまでセキュリティーを気にしているユーザーはあんまりいなくて、面倒なだけだと思っている人がほとんどなんだろうなと思っています。

PythonでGmailを送信するためには、そんなセキュリティーを高める2段階認証をオフにしておく必要があります。

Python Udemy Gmail送信

Googleアカウントの設定の【セキュリティ】の項目から、Googleへのログインで、2段階認証プロセスをオフにします。

2段階認証をオフにする方法の他にはアプリパスワードを設定する方法もあります。

安全性の低いアプリのアクセスをオンにする

続いて、同じく【セキュリティ】の項目から、安全性の低いアプリのアクセスをオンにします。

Python Udemy Gmail送信

安全性の低いアプリからのアクセスが可能になるということは、セキュリティーが下がるということなのであまりおすすめできませんが、実際にGmailを使ったメール送信をプログラムに入れる場合は、メール送信専用のアカウントにしたほうがいいですね。

これらの設定を完了したら、あとはコードを書いていきます。

Gmailから送信

基本的にコードはOutlookのときと同じです。

from email import message
import smtplib


smtp_host = 'smtp.gmail.com'
smtp_port = 587
from_email = 'udemyfun@gmail.com'
to_email = 'master@udemyfun.com'
username = 'udemyfun@gmail.com'
password = 'nikonikonikon'

msg = message.EmailMessage()
msg.set_content('Gmail test')
msg['Subject'] = 'Test mail from Gmail'
msg['From'] = from_email
msg['To'] = to_email

server = smtplib.SMTP(smtp_host, smtp_port)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username, password)
server.send_message(msg)
server.quit()

SMTPで使用するポートは基本的に同じなので、変更するところはsmtp_hostfrom_emailusernamepasswordです。

あとは実行するだけ。

メールの受信

エラーの出力もなく、問題なくプログラムが終了すれば、メール送信が完了しています。

送信先のメールを確認するときちんとメールが届いているはずです。

Python Udemy Gmail送信

プログラムの実行が問題なく終了しているのに、メールが届いていない場合は、送信先アドレスが間違っているのがほとんどなので、アドレスが間違っていないか確認しましょう。

アドレスが間違っていなければ、受信サーバー側の処理が遅延している可能性があるので、少し待ってから確認してみてください。

Googleはセキュリティが厳しい

Googleは、年々セキュティリを厳しくしている感じがします。

もちろん、メインで使っているアカウントを乗っ取られたりすると大変なことになるので、メインで使っているアカウントで今回のテストをするのはやめたほうがいいので、新しいアカウントを取得して試すようにしましょう。

メールの送信テストに限らず、何かのテストをするときは、面倒でも必ずテスト用のアカウントを用意する癖をつけましょう。

面倒がってメインアカウントで試したことがきっかけでトラブルが起こってしまうと大変ですからね。

それでは、今日はこのへんで。

明日も元気にGood Python!