Pregunta Correo electrónico en Python: el uso de dos puntos no causa salida


Una experiencia realmente extraña con esto que me llevó más de una hora descubrirlo. Tengo un script cgi escrito en python que toma los datos del formulario y los reenvía a un correo electrónico, el problema era que si había dos puntos en la cadena, Python no enviaría nada al correo electrónico.

¿Alguien sabe a que se debe esto?

Por ejemplo:

output = "Print- Customer"

funciona, sin embargo:

output = "Print: Customer"

no imprime ninguna salida.

Mi función de correo electrónico funciona esencialmente:

server.sendmail(fromaddr, toaddrs, msg)

donde msg = salida

Solo me pregunto si el colon es un personaje especial en la salida de cadena de pitón


5
2017-09-03 18:01


origen


Respuestas:


Los dos puntos no son un carácter especial en la salida de cadena de Python, pero son especiales para los encabezados de correo electrónico. Intente insertar una línea en blanco en el resultado:

output = "\nPrint: Customer"

6
2017-09-03 19:12



Permítame hacer algunas conjeturas:

  1. El correo realmente se está enviando, pero el cuerpo parece estar vacío (la pregunta no dice esto).
  2. No está utilizando la biblioteca de correo de python incorporada.
  3. Si abre el correo en su lector de correo y mira los encabezados, el "print:"la línea estará presente.

Si es así, el problema es que no estás terminando los encabezados de los correos con un "\r\n"par, y el lector de correo piensa que"print:"es un encabezado de correo, mientras que"print -"es parte del cuerpo de un correo electrónico mal formado.

Si agrega el "\r\n"después de sus encabezados, todo debería estar bien.


2
2017-09-03 19:17