gpt4 book ai didi

python - Django 电子邮件应用程序断线 - 最大行长度(以及如何更改它)?

转载 作者:太空狗 更新时间:2023-10-30 00:00:29 24 4
gpt4 key购买 nike

# 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 View 代码生成了一个包含虚线的文本文件:

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 应用程序,它会发送一封带有帐户激活链接。这个链接是一个很长的网址,带有一个随机的标记在末尾(30 多个字符),结果,该行在标记中间断开。

如果问题是使用 Django 的 filebased EmailBackend,我切换到 smtp 后端并在 Debug模式下运行内置的 Python smtpd 服务器。这将我的电子邮件转储到控制台,它仍然是坏的。

我确定 django-registration 正在运行,有无数人在使用它 :) 所以这一定是我做错了或配置错误。我只是不知道是什么。

更新 2 - 根据 Django 列表中的帖子,它确实是基础 Python email.MIMEText object ,如果正确的话,只会将问题推后一点。它仍然没有告诉我如何修复它。查看文档,我什至没有看到任何提到换行的内容。

更新 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 ------------

最佳答案

您可以通过创建 EmailMessage 对象并传入 headers={'format': 'flowed'} 来让您的电子邮件客户端不超过 78 个字符的软限制,如下所示:

from django.core.mail import EmailMessage

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.'
email = EmailMessage(
subject='some_subject',
body=the_text,
from_email='me@test.com',
to=['me@test.com'],
headers={'format': 'flowed'})

email.send()

如果这不起作用,请尝试使用非调试 smtp 设置将文件发送到实际的电子邮件客户端,该客户端根据电子邮件 header 中定义的规则呈现电子邮件。

关于python - Django 电子邮件应用程序断线 - 最大行长度(以及如何更改它)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com