Pythonで自動メールメッセージを送信する方法

Pythonで自動メールメッセージを送信する方法

商用の電子メールクライアントはユーザーフレンドリーなGUIの便利さを提供しますが、多くの開発者やコンテンツ作成者が電子メールのニーズに求める柔軟性とカスタマイズ性に欠けていることがよくあります。





ソーシャルメディアチャネルで新しいサブスクライバーに感謝のメールを送信する場合でも、最新のプロジェクトにメール機能を追加する場合でも、PythonでSMTPを使用して自動メッセージを送信する機能は便利です。





今日あなたのマシンで実行されている電子メールを送信するためのPythonスクリプトを取得する方法を見つけるために読んでください。





SMTPとは何ですか?

簡単に言うと、SMTP(Simple Mail Transfer Protocol)は、メールサーバーがインターネット経由で電子メールを送信するための通信プロトコルです。

これは、TCP / IPスイートのアプリケーション層の不可欠な部分であり、インターネットまたは他の同様のネットワークを介した通信に使用される一連のプロトコルです。 SMTPが実装されているネットワークでは、 ストアアンドフォワード ネットワーク間でメールを移動するのに役立ちます。



各エンドポイントで、メール転送エージェント(MTA)と呼ばれるソフトウェアは、ストアアンドフォワードを使用して、参加しているSMTPサーバー間の通信を容易にします。したがって、SMTPの主な役割は、メールがネットワーク内のあるポイントから別のポイントに移動する場所と方法を指示することです。

入門

このプログラムを使用してメールを送信するには、メールアカウントが必要です。これは、メールクライアントのSMTPサービスを使用してメールを送信するためです。このチュートリアルでは、Gmailを使用します。





ローカルSMTPデバッグサーバーを使用してテストメールを送信することもできますが、より直感的であるため、ここではメールアカウントを使用してメールを送信します。

既存のGmailアカウントを使用することもできますが、プログラムをいじってみると、すぐにテストメールでいっぱいになる可能性があります。これが、テストの目的で「使い捨て」アカウントを作成することをお勧めする理由です。





次に、オプションをオンにします 安全性の低いアプリを許可する Gmailアカウントにアクセスします。プライマリメールのプライバシー設定をいじることはお勧めできないため、これは使い捨てメールを使用するもう1つの理由です。

Pythonでメールを書く

Python 3には、SMTPサーバーでの作業に使用できるsmtplib(smtpライブラリの略)と呼ばれるモジュールがプリインストールされています。

他のPythonモジュールと同様に、最初に行う必要があるのはsmtplibをインポートすることです。

import smtplib

SMTPオブジェクトの初期化

これで、smtplibを使用してSMTPオブジェクトを作成できます。これにより、従来の電子メールクライアントのほとんどの機能が提供されます。ただし、SMTPオブジェクトの関数は、インスタンスメソッドを介してのみ使用できます。したがって、当然、次のステップはオブジェクトインスタンスを宣言することです。

mySMTP = smtplib.SMTP('smtp.google.com')

これにより、GoogleのSMTPサーバーを使用してメールを送信するようにSMTPオブジェクトが構成されます。

この後、送信者と受信者の電子メールを指定します。ここで、以前に作成したGmailアカウントが役立ちます。

emailSender = senderMail@sender.com
myThroaway = 'myEmail@gmail.com'
emailRecipients = [myThroaway]

ここで注意すべきことの1つは、受信者リストは実際には配列であるということです。つまり、非アトミック値を格納するように設計されています。その結果、このフィールドでメーリングリスト全体を指定することもできます。

メッセージを書く

おそらくプロセスの最も簡単な部分です。ここでは、新しい電子メールを作成するときに通常追加する値を入力する必要があります。これも:

  • 送信者の詳細
  • 受信者の詳細
  • 主題
  • メッセージ本文

これらのフィールドは三重引用符で囲まれ、次のように区切られます。

アイコンウィンドウ10を変更する方法
newEmail = '''From: From Person
To: To Person
Subject: Email Test
This is the body of the email.
'''

メールの送信

最後に、sendmailコマンドを使用して、SMTPサーバーから受信者のサーバーにメールを送信できます。

mySMTP.sendmail(emailSender, emailRecipients, newEmail)

さて、最後のステップは1つだけです。それは、予測可能なプログラムのクラッシュを防ぐためにコードを再編成することです。

Pythonメールプログラムのトラブルシューティング

SMTPサーバーが受信者の接続との接続を確立できない場合や、SMTPポート間での電子メールの送信に問題がある場合があります。このような場合、プログラムが予期せずクラッシュする可能性があります。

そのような可能性を説明するために、あなたは使用することができます 試してみてください エラーが発生しやすいステートメントをブロックして、 試す ブロック。プログラム全体とtry-exceptブロックは、次のようになります。

import smtplib
emailSender = senderMail@sender.com
myThroaway = ‘my_email@gmail.com’
emailRecipients = [myThroaway]
newEmail = '''From: From Person
To: To Person
Subject: Email Test
This is the body of the email.
'''
try:
smtpObj = smtplib.SMTP(‘smtp.gmail.com’)
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (Email sent successfully!)
except SMTPException:
print ('Error: There was an error in sending your email.')

メールの保護

実際の設定でPythonを使用してメールを送信する場合は、通信が両端で安全であることを確認することが重要です。

デフォルトのポートで単純なSMTPサーバーを使用しても、通信に暗号化レイヤーは提供されません。これは、サードパーティがネットワークでリッスンしている場合、ログイン資格情報と電子メールに含まれる情報にアクセスできることを意味します。

この問題を回避する1つの方法は、TLS(Transport Layer Security)プロトコルを使用して通信を暗号化することです。これは、GmailやOutlookなどの主要な電子メールクライアントが電子メールを悪用しないようにするために使用するのと同じプロトコルです。

そのためには、以前に作成したプログラムにいくつかの小さな変更を加える必要があります。

もちろん、最初のステップはインポートすることです ssl と一緒にライブラリ smtplib 。 NS ssl ライブラリを使用すると、両端の特定のポートに接続することで、安全なSSLコンテキストを作成し、暗号化されたネットワークを介して通信することができます。

安全なSSLコンテキストは、暗号、プロトコルバージョン、信頼できる証明書、TLSオプション、およびTLS拡張のコレクションに他なりません。

これに続いて、TLSポートを指定し、いくつか追加することができます ssl 安全なメール送信者を作成するためのライブラリ関数。

すべての変更が加えられたコードは、次のようになります。

import smtplib, ssl
smtpServer = 'smtp.gmail.com'
port = 587
myEmail = 'my_email@gmail.com'
password = 'my_password'
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = '''From: From Person
To: To Person
Subject: Email Test
This is the body of the email.
'''
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print('the email could not be sent.')
finally:
server.quit()

以前と同様に、プログラムの突然のクラッシュを防ぐために、try-exceptブロックでSMTPインスタンスを作成して使用する必要があります。

Firefoxはクロムよりも少ないRAMを使用しますか

このPythonスクリプトでできること

コードを使用して電子メールを自動化するという驚くほど便利なスキルを習得したので、さまざまなメーリングリストに電子メールを送信する必要があるあらゆるプラットフォームに適用できます。

個人のWebサイトで使用して自動確認メールを送信することから、クリスマスカードや招待状を家族や友人にメールで送信することまで、この小さなPythonスクリプトの使用はあなた自身の創造性によってのみ制限されます。

また、これはPythonで実行できる多くのすばらしいことの1つにすぎません。ユビキタスな開発者サポートと習得しやすい構文により、Pythonスキルの習得がこれまでになく簡単になりました。

コードを使用してクールなものを構築し続けるには、その方法に関するガイドを確認してください。 Python3を使用して独自のTelegramボットを構築する

共有 共有 つぶやき Eメール Keras、Pytorch、Tensorflowなどを使用してPythonとAIのスキルをアップグレードする方法

Python、人工知能、Keras、PyTorchなどでプログラミングとウェブ開発のスキルをアップグレードします

次を読む
関連トピック
  • プログラミング
  • Gmail
  • メールのヒント
  • Python
  • タスクの自動化
著者について ヤシュシェラニ(10件の記事が公開されました)

Yashは、物を作り、すべての技術について書くのが大好きな、意欲的なコンピューターサイエンスの学生です。余暇には、Squashをプレイしたり、最新のMurakamiのコピーを読んだり、Skyrimでドラゴンを狩ったりするのが好きです。

YashChellaniのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください