# 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, '[email protected]', ['[email protected]'])
El código de la vista por encima de Django, los resultados en un archivo de texto que contiene una línea quebrada:Django aplicación de correo electrónico líneas discontinuas - longitud de línea máxima (y cómo cambiarla)?
this is a test of a really long line that has more words that could possibl=
y fit in a single column of text.
-------------------------------------------------------------------------------
Alguien sabe cómo cambiarlo por lo que el archivo de salida no tiene saltos de línea? ¿Hay alguna configuración en Django que controle esto? Versión 1.2 de Django.
Actualización - una copia de seguridad un nivel y explicar mi problema original :) Soy usando la aplicación django-registro, que envía un correo electrónico con una cuenta de enlace de activación. Este enlace es una URL larga, con un token aleatorio al final (más de 30 caracteres), y como resultado, la línea se está rompiendo en el medio del token.
En caso de que el problema estaba usando Django del filebased EmailBackend, me cambié a la SMTP backend y corriendo el servidor smtpd incorporado en Python, en el modo de depuración. Esto arrojó mi correo electrónico a la consola, donde todavía estaba roto.
Estoy seguro de que django-registration está funcionando, con miles de millones de personas usándolo :) Así que debe ser algo que he hecho mal o mal configurado. No tengo idea de qué.
Actualización 2: de acuerdo con una publicación en una lista de Django, es realmente el Python email.MIMEText object subyacente, que, de ser correcto, solo hace retroceder el problema un poco más. Todavía no me dice cómo arreglarlo. Al mirar los documentos, no veo nada que mencione el ajuste de líneas.
Actualización 3 (suspiro) - He descartado que sea un problema de objeto MIMEText. Usé un programa Python puro y el smtplib/MIMEText para crear y enviar un correo electrónico de prueba, y funcionó bien. Es también usó un juego de caracteres = "us-ascii", que alguien sugirió era el único conjunto de caracteres a no ajustar texto en objetos MIMEText. No sé si eso es correcto o no, pero miré más de cerca mi salida de correo electrónico de Django, y tiene un juego de caracteres "utf-8".
¿Podría ser el juego de caracteres incorrecto el problema? Y si es así, ¿cómo puedo cambiar en Django?
Aquí está todo el flujo de salida desde el correo electrónico de Django:
---------- MESSAGE FOLLOWS ----------
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: some_subject
From: [email protected]
To: [email protected]
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 ------------
Nota - acaba de actualizar a Django 1.3, el problema sigue ahí. (También usando Python 2.6) –
Cuando pruebo con smtp mi correo electrónico viene con una url intacta. con el archivo basado está roto. –
algo que probar: http://almaer.com/blog/avoiding-broken-links-in-email rodee su url con '<' and '>' (creo que es una cosa del cliente de correo electrónico) –