Pythonメール送信:ガイド
Pythonを使用してメールを送信する方法
Pythonは多くの機能を備えた言語です。データ分析、Web開発などに使用できます。それだけではありません。Pythonには隠された機能があります。Pythonを使用してメールを送信できます。これは、Pythonプログラムから、パスワードリセットの電子メール、パスワードを忘れた電子メール、ユーザー通知、および送信したいその他の電子メールを送信できることを意味します。
このガイドでは、Pythonを使用してメールを送信する方法について説明します。メールとsmtplibライブラリ、それらがどのように機能するかを確認し、メールを送信するためのサンプルプログラムを作成します。
面倒なことはせずに、始めましょう!
Pythonを使用したメールの送信
コンピュータプログラムから電子メールを送信すると、プログラムはSMTP(Simple Mail Transfer Protocol)と呼ばれるプロトコルを使用してメッセージを送信します。このプロトコルは、メッセージを送信するために世界中の電子メールサービスとクライアントによって使用されます。
コンピュータプログラムからメールを送信するには、SMTPサーバーが必要です。自分で設定することもできますが、必ずしもそうする必要はありません。 GmailやOutlookなどのサービスはSMTPサービスを提供するため、既存のメールアカウントを使用してメールを送信できます。
このガイドでは、GmailのSMTPサーバーからメールを送信していることを前提としています。 SMTPサーバーの詳細については、Gmailの公式ドキュメントをご覧ください。メールプロバイダーがSMTPをサポートしているかどうかを確認するには、「[プロバイダーの名前]SMTP資格情報」をオンラインで検索してください。
メールを送信するには、次の3つの手順があります。
- SMTP接続を構成します
- メッセージオブジェクトを作成する
- SMTP経由でメッセージを送信する
SMTP接続の構成
まず、SMTP接続を設定しましょう。これは、接続を管理するために必要なすべてのコードを提供するsmtplibというライブラリを使用して実行できます。このライブラリのおかげで、電子メールを送信するのに数行のコードしか必要ありません。
参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。
平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。
smtplibライブラリをコードにインポートすることから始めます:
import smtplib
ここで、SMTPサーバーの資格情報を格納する変数を設定する必要があります。これらの値を変数に格納すると、コードの可読性を維持するのに役立ちます。使用する変数は次のとおりです。
sender = '[email protected]' password = '123456' server = 'smtp.gmail.com' port = 465
このコードには、SMTP接続を作成するために必要なすべての構成が含まれています。これで設定が完了したので、SMTPサーバーにログインできます。
server = smtplib.SMTP_SSL(server, port) server.login(sender, password)
このコードは、SMTPサーバーへのSSL接続を作成します。これは、サーバーへの接続にSSL(Secure Socket Layer)を使用していることを意味します。 SSLは従来の接続よりも安全であり、その結果、SMTPサーバーの標準になりました。
これでSMTP接続が構成されました!
メッセージオブジェクトを作成する
私たちのコードは今のところあまり機能していません。間違いなくメールを送信しません。これは、メッセージオブジェクトをまだ作成していないためです。メールライブラリを使用してこれを実行しましょう。 smtplibを使用してメッセージオブジェクトを作成できますが、電子メールライブラリはより簡潔です。
必要なメールパッケージをインポートすることから始めましょう:
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
これらのライブラリをインポートすると、メッセージオブジェクトを作成できます:
message = MIMEMultipart() body = 'This is an email sent from Python!' message['From'] = sender message['To'] = '[email protected]' message['Subject'] = 'This is a test email' message.attach(MIMEText(body, 'plain'))
まず、「メッセージ」というオブジェクトを初期化します。このオブジェクトは、電子メールライブラリのMIMEMultipartクラスを参照します。次に、メールの本文と送信者、受信者、件名を指定しました。
コードの最後の行は、メッセージの本文をメールに添付します。
メッセージを送信
あとはメッセージを送信するだけです:
server.send_message(message)
すべてのコードを一緒に実行すると、メールが送信されます。 「これはテストメールです」というタイトルのメールが[email protected]から[email protected]に送信されます。
ファイルからのテンプレートの読み取り
メールの本文は1行だけです。これは、Python内でメール本文を作成する方が実用的であることを意味します。ほとんどのメールはこれより長いため、特定のメールのテキストを保存するテンプレートを作成することをお勧めします。
まず、email.txtというファイルを作成し、次のコンテンツに貼り付けます。
Hello ${NAME}, This is a test email! Thanks, Career Karma
このテンプレートには、「NAME」と呼ばれる変数が含まれています。この変数は中括弧({})で囲まれ、前にドル記号($)が付いています。この変数は、コードの後半で受信者の名前に置き換えられます。
次に、このテンプレートをコードに読み込む必要があります。これを行うには、open()メソッドを使用してファイルを読み取るread_emailというクラスを作成します。
文字列ライブラリからTemplateオブジェクトをインポートします。このオブジェクトを使用して、メールで読み取れるオブジェクトを作成します。 Pythonプログラムの上部にある次のコード行を貼り付けます。
from string import Template
すべてのインポートステートメントの下に、次のコードを貼り付けます:
def read_email(): with open('email.txt', 'r') as file: contents = file.read() return Template(contents)
この関数は、「email.txt」というファイルを変数「contents」に読み込みます。次に、その値は、「文字列」ライブラリのTemplateメソッドを使用してTemplateオブジェクトに変換されます。ファイルの読み取りについて詳しくは、Pythonのファイル読み取りチュートリアルをご覧ください。
プログラムの次のコード行を変更します。
body = 'This is an email sent from Python!'
このコードを使用するには:
email_content = read_email() body = email_content.substitute(NAME="Test")
このコードはread_email()
を呼び出します コード内の関数を使用して、「email.txt」ファイルの内容を読み取ります。次に、メールテンプレート内のNAMEの値が「Test」の値に置き換えられます。まとめると、コードは次のようになります。
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from string import Template def read_email(): with open('email.txt', 'r') as file: contents = file.read() return Template(contents) sender = '[email protected]' password = '123456" server = 'smtp.gmail.com' port = 465 server = smtplib.SMTP_SSL(server, port) server.login(sender, password) message = MIMEMultipart() email_content = read_email() body = email_content.substitute(NAME="Test") message['From'] = sender message['To'] = '[email protected]' message['Subject'] = 'This is a test email' message.attach(MIMEText(body, 'plain'))
このプログラムを実行すると、SMTPサーバーのクレデンシャルに置き換えられ、電子メールが送信されます。メールを送信するプログラムを作成しました。
結論
Pythonでメールを送信するのは難しいことではありません。テンプレートを使用しない場合、メールの送信には数行のコードしか必要ありません。電子メールモジュールとsmtplibモジュールは、手間のかかる作業のほとんどを実行します。そうは言っても、電子メールモジュールをより広範囲に使用して、値を置き換えることができる電子メールのテンプレートを作成できます。
挑戦しますか?プログラムを上記から変更して、複数の受信者への電子メールの送信をサポートします。ヒント:これらのメールを送信するには、forループを使用することをお勧めします。
これで、エキスパートのようにPythonでメールを送信する準備が整いました。
-
Pythonで自動メールメッセージを送信する方法
商用の電子メールクライアントはユーザーフレンドリーなGUIの便利さを提供しますが、多くの開発者やコンテンツ作成者が電子メールのニーズに求める柔軟性とカスタマイズ性に欠けていることがよくあります。 ソーシャルメディアチャネルで新しいサブスクライバーに感謝のメールを送信する場合でも、最新のプロジェクトにメール機能を追加する場合でも、PythonでSMTPを使用して自動メッセージを送信する機能は非常に便利です。 今日のマシンで実行されている電子メールを送信するPythonスクリプトを取得する方法を確認するために読んでください。 SMTPとは何ですか? 簡単に言うと、SMTP(Simple M
-
WhatsAppからEメールに写真を送信する方法:究極のガイド
WhatsAppユーザーは、さまざまな理由で写真をメールに送信することを選択します。 AndroidまたはiOSユーザーは、GoogleドライブまたはiCloudが以前の重要な会話、画像、およびビデオを無意識のうちに削除することを心配する可能性があります。これは残念なことです。 バックアップをAndroidからiOSに、またはその逆に転送する場合、WhatsAppユーザーは写真をメールで共有するように動機付けられます。最後に、エクスポートしたバックアップを他の人と共有する必要があると、ユーザーはそれをメールで送信するようになります。 そうは言っても、さまざまな写真のエクスポート手順を実装で