PythonでHTMLメールを送信する方法【smtplibの使い方を解説】
Pythonでメールを送信する場合、デフォルトではすべての内容が単なるテキストとして扱われます。そのため、メッセージ内にHTMLタグを記述しても、タグは整形されずにそのまま文字列として表示されてしまいます。
しかし、PythonにはHTML形式のメールを実際のHTMLとして送信する機能が用意されています。ポイントは、メール送信時にMIMEバージョン、コンテンツタイプ(Content-Type)、文字セット(charset)を正しく指定することです。
MIMEヘッダーでHTMLメールを指定する
HTMLメールを送信するには、メッセージのヘッダー部分に以下のような情報を含めます。
- MIME-Version: 使用するMIMEのバージョン(通常は「1.0」)
- Content-type: 「text/html」を指定することで、本文がHTMLとして解釈されます
- charset: 文字コードを指定します。日本語を含む場合は「utf-8」などを指定しましょう
HTMLメール送信のサンプルコード
以下は、HTML形式のコンテンツをメールとして送信する例です。
#!/usr/bin/python
import smtplib
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html; charset="utf-8"
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print("Successfully sent email")
except SMTPException:
print("Error: unable to send email")
コードのポイント
smtplib.SMTP('localhost')でローカルのSMTPサーバーに接続します。環境に応じてホスト名やポート番号を変更してください。sendmail()の引数には、送信元アドレス・宛先アドレスのリスト・メッセージ本体を渡します。- 送信に失敗した場合は
SMTPExceptionが発生するため、try-except構文でエラー処理を行うのが安全です。 - 日本語の本文を含める場合は、
charset="utf-8"を指定し、必要に応じてemail.mime.text.MIMETextを使うとより確実にエンコーディングを制御できます。
このように、Content-Typeを「text/html」に設定するだけで、受信側のメールクライアントは本文をHTMLとして表示してくれます。装飾されたニュースレターや通知メールを作成したい場合に、ぜひ活用してみてください。
-
PythonとSeleniumでWhatsAppチャットボットを作る方法
はじめに この記事では、Pythonを使ってWhatsAppのチャットボットを作成する方法を解説します。TwitterやFacebook向けの一般的なチャットボットとは異なり、WhatsAppは運営ポリシーの関係上、プラットフォーム上で直接ボットを動かすことができません。 しかし、SeleniumというPythonの強力なパッケージを使えば、ブラウザの操作を自動化することでこれを実現できます。Seleniumを利用すれば、ブラウザ経由で「WhatsApp Web」を自由に操作できるのです。 必要なもの 準備が必要なのは、主に以下の3点です。 1. Selenium Seleniumはpip
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c