htmlメールを何とかする

· ☕ 3

昨日の問題解決編

htmlメールをちゃんと読み替える。

今は、なんかこんな感じになっている…

テスト本文
-- 
○●-------------------------------------------------------------------------●○
エンジョイクリエイト
URL: https://encr.jp

line公式アカウントで生理予定日簡単予測
https://encr.jp/blue
○●-------------------------------------------------------------------------●○
<div dir="auto">テスト本文</div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">○●-------------------------------------------------------------------------●○<br>  エンジョイクリエイト<br>  URL: <a href="https://encr.jp" target="_blank">https://encr.jp</a><br><br>  line公式アカウントで生理予定日簡単予測<br>  <a href="https://encr.jp/blue" target="_blank">https://encr.jp/blue</a><br>○●-------------------------------------------------------------------------●○</div>

なんか、textもhtmlも来てて、両方来るのが邪魔って感じなのかな…。

メールの仕組みを調べる

すごい分かりやすいサイト見つけた

こちらによると、Content-Typeヘッダの値「text/plain」だとtext、「text/html」だとhtmlになるらしい。

で、html対応しているサーバーはhtmlを表示して、対応していないサーバーはplainを表示するみたい!

よくできてるねーww

だから、とりあえず、「text/plain」だけ拾うようにしてみる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    if not attach_fname:
        charset = str(part.get_content_charset())
        if charset:
            body = part.get_payload(decode=True).decode(charset, errors="replace")
        else:
            body = part.get_payload(decode=True)
        
        if part.get_content_type() == "text/html":
            body_html += body
        elif part.get_content_type() == "text/plain":
            body_text += body

こんな感じ。

で、body_textだけを転送するようにして、受信すると、

テスト本文
-- 
○●-------------------------------------------------------------------------●○
エンジョイクリエイト
URL: https://encr.jp

line公式アカウントで生理予定日簡単予測
https://encr.jp/blue
○●-------------------------------------------------------------------------●○

うん。いい感じ。

今日の朝活おしまい!


るな
るな
エンジニア