Python
 Computer >> コンピューター >  >> プログラミング >> Python

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として表示してくれます。装飾されたニュースレターや通知メールを作成したい場合に、ぜひ活用してみてください。

  1. PythonとSeleniumでWhatsAppチャットボットを作る方法

    はじめに この記事では、Pythonを使ってWhatsAppのチャットボットを作成する方法を解説します。TwitterやFacebook向けの一般的なチャットボットとは異なり、WhatsAppは運営ポリシーの関係上、プラットフォーム上で直接ボットを動かすことができません。 しかし、SeleniumというPythonの強力なパッケージを使えば、ブラウザの操作を自動化することでこれを実現できます。Seleniumを利用すれば、ブラウザ経由で「WhatsApp Web」を自由に操作できるのです。 必要なもの 準備が必要なのは、主に以下の3点です。 1. Selenium Seleniumはpip

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c