次の python スクリプトは、sendmail にパイプできる電子メール ファイルを生成します。これを自分の Gmail アカウントに送信すると、25 行目、50 行目、51 行目が予期したものではありません。他のすべての行は期待どおりに表示されます。
import sys
print "From:test@test.com"
print "To:you@you.com"
print "Subject: test no carriage return"
print "MIME-Version: 1.0"
print "Content-Disposition: inline;"
print "Content-Type: text/html"
sys.stdout.write ("<html>" )
count = 1
while ( count < 55):
# output without a carriage return
sys.stdout.write( "<tr><td>test" + str(count) + " no carriage returns!</td>")
count = count + 1
sys.stdout.write ("</html>")
電子メールでは、行 25、50、51 に次のように期待します。
test25 no carriage returns!
test50 no carriage returns!
test51 no carriage returns!
代わりに、これがレンダリングされます。
test25 no carriage retur! ns!
test50 no ca! rriage returns!
test51 no carriage returns! test52 no carriage returns!
出力をprint
の代わりに使用するように変更するstdout
と、電子メールは期待どおりに表示されます。MS Outlook でもこれを試してみましたが、同じ効果が得られました。改行を使用しない場合に予期しない結果が生じる理由は何ですか?