前提
Pythonでメール送信の開発時のチェックとして
python -m smtpd -n -c DebuggingServer localhost:1025
(ローカルホスト、ポート1025)
を利用しているが、バイナリ表記でコンソールに表示される
修正方法が見つからなかったので、対応した内容を投稿しておきます。
対応方法
以下のファイルを適当な場所に[smtp.py]というファイル名で作成
smtp.py
# coding: utf-8
import smtpd
class DebuggingServer(smtpd.DebuggingServer):
def _print_message_content(self, peer, data):
inheaders = 1
lines = data.splitlines()
for line in lines:
# headers first
if inheaders and not line:
peerheader = 'X-Peer: ' + peer[0]
if not isinstance(data, str):
# decoded_data=false; make header match other binary output
peerheader = repr(peerheader.encode('utf-8'))
print(peerheader)
inheaders = 0
if not isinstance(data, str):
# Avoid spurious 'str on bytes instance' warning.
line = repr(line.decode('utf-8'))
print(line)
python -m smtpd -n -c smtp.DebuggingServer localhost:1025
で起動することでUTF-8の形式で出力される。
補足
元の実装から
line = repr(line)
↓
以下にオーバライドしている
line = repr(line.decode('utf-8'))