# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
# view.py
from django.core.mail import send_mail
def send_letter(request):
the_text = 'this is a test of a really long line that has more words that could possibly fit in a single column of text.'
send_mail('some_subject', the_text, 'me@test.com', ['me@test.com'])
上記のDjangoビューコードは、破線を含むテキストファイルになります。
this is a test of a really long line that has more words that could possibl=
y fit in a single column of text.
-------------------------------------------------------------------------------
出力ファイルに改行がないように変更する方法を知っている人はいますか?これを制御するDjangoの設定はありますか?Djangoのバージョン1.2。
更新-レベルをバックアップし、元の問題を説明します:)アカウントアクティベーションリンクが記載されたメールを送信する django-registrationアプリを使用しています。このリンクは長いURLであり、最後にランダムなトークン(30文字以上)があり、その結果、トークンの途中で行が途切れています。
問題がDjangoのファイルベースのEmailBackendを使用していた場合は、 smtpバックエンドに切り替えて、組み込みのPythonsmtpdサーバーをデバッグモードで実行しました。これは私の電子メールをコンソールにダンプしましたが、それでもまだ壊れていました。
django-registrationは機能していると確信しており、何十億もの人々がそれを使用しています:)ですから、これは私が間違ったことや設定を間違えたことに違いありません。何がわからない。
アップデート2-Djangoリストの投稿によると、これは実際には基礎となるPython email.MIMETextオブジェクトであり、正しい場合は、問題をもう少し押し戻すだけです。それでも修正方法はわかりません。ドキュメントを見ると、行の折り返しについても言及しているものは何もありません。
アップデート3(ため息)-MIMETextオブジェクトの問題であるとは除外しました。純粋なPythonプログラムとsmtplib/MIMETextを使用してテストメールを作成および送信しましたが、正常に機能しました。また、charset = "us-ascii"を使用しました。これは、MIMETextオブジェクトでテキストをラップしない唯一の文字セットであると誰かが提案しました。それが正しいかどうかはわかりませんが、Djangoの電子メール出力を詳しく調べたところ、「utf-8」の文字セットが含まれています。
間違った文字セットが問題になる可能性がありますか?もしそうなら、どうすればDjangoで変更できますか?
Djangoのメールからの出力ストリーム全体は次のとおりです。
---------- MESSAGE FOLLOWS ----------
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: some_subject
From: me@test.com
To: me@test.com
Date: Tue, 17 May 2011 19:58:16 -0000
this is a test of a really long line that has more words that could possibl=
y fit in a single column of text.
------------ END MESSAGE ------------