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 = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
ここで注意すべきことの1つは、受信者リストは実際には配列であるということです。つまり、非アトミック値を格納するように設計されています。その結果、このフィールドでメーリングリスト全体を指定することもできます!
おそらくプロセスの最も簡単な部分です。ここでは、新しいメールを作成するときに通常追加する値を入力する必要があります。これには以下が含まれます:
- 送信者の詳細
- 受信者の詳細
- 件名
- メッセージ本文
これらのフィールドは三重引用符で囲まれ、次のように区切られます。
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
最後に、sendmailコマンドを使用して、SMTPサーバーから受信者のサーバーにメールを送信できます。
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
さて、最後のステップは1つだけです。それは、予測可能なプログラムのクラッシュを防ぐためにコードを再編成することです。
Pythonメールプログラムのトラブルシューティング
SMTPサーバーが受信者の接続を確立できない場合や、あるSMTPポートから別のSMTPポートへの電子メールの送信に問題がある場合があります。このような場合、プログラムが予期せずクラッシュする可能性があります。
このような可能性を説明するために、 try-exceptを使用できます。 エラーが発生しやすいステートメントをブロックして、試行内に配置します ブロック。プログラム全体とtry-exceptブロックは、次のようになります。
import smtplib
emailSender = “[email protected]”
myThroaway = ‘[email protected]’
emailRecipients = [myThroaway]
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
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と一緒にライブラリ 。 ssl ライブラリを使用すると、両端の特定のポートに接続することで、安全なSSLコンテキストを作成し、暗号化されたネットワークを介して通信することができます。
安全なSSLコンテキストは、暗号、プロトコルバージョン、信頼できる証明書、TLSオプション、およびTLS拡張のコレクションに他なりません。
これに続いて、TLSポートを指定し、いくつかの sslを追加できます。 安全なメール送信者を作成するためのライブラリ関数。
すべての変更が加えられたコードは、次のようになります。
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
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インスタンスを作成して使用する必要があります。
コードを使用してメールを自動化するという驚くほど便利なスキルを身に付けたので、さまざまなメーリングリストにメールを送信する必要のあるあらゆるプラットフォームに適用できます。
個人のWebサイトで使用して自動確認メールを送信することから、クリスマスカードや家族や友人への招待状をメールで送信することまで、この小さなPythonスクリプトの使用はあなた自身の創造性によってのみ制限されます。
また、これはPythonで実行できる多くのすばらしいことの1つにすぎません。ユビキタスな開発者サポートと習得しやすい構文により、Pythonスキルの習得がこれまでになく簡単になりました。
コードを使用してクールなものを構築し続けるには、Python3を使用して独自のTelegramボットを構築する方法に関するガイドを確認してください。
-
Instagram でボイス メッセージを送信するには?
Instagram は、ユーザーに幅広いネットワークを提供するソーシャル メディア プラットフォームです。ワークアウトの短いビデオを投稿したり、フィットネスのヒントを提供したり、製品を宣伝したり、単に友達とつながったりする場合でも、Instagram がすべてを行います。ソーシャル メディアの巨人は、ときどき新しい機能を考え出します。 最近のものはボイスメッセージです。はい、そうです! Instagram では、ユーザーが音声 (音声) メッセージを別の Instagrammer に送信できるようになりました。ユーザーはかなり長い間この機能を待ち望んでいました. この投稿では、Instag
-
匿名でメールを送信する方法
市場には、Gmail、Outlook、Yahoo! などの機能豊富な電子メール クライアントがたくさんあります。メールは、最も評判の良いインターネット企業の一部が所有しています。多くのユーザーは、オンライン プライバシーに関していまだに安全を感じていません。これらのプラットフォームはすべて、ユーザーをスパイしてユーザーの行動を見つけ出し、他のオンライン アクティビティを追跡しようとするためです。 私たちは通常、双方向のコミュニケーションに電子メールを使用しますが、特定されずに電子メールを送受信する必要があると感じる場合があり、その理由は完全に正当です. プライバシーが好きなだけかもしれません