with raspberry library python email smtplib

raspberry - send email python smtplib



smtplib envĂ­a un mensaje en blanco si el mensaje contiene ciertos caracteres (2)

El problema es que smtplib no está poniendo una línea en blanco entre el encabezado del mensaje y el cuerpo del mensaje como se muestra en la forma "Mostrar original" de mi prueba:

Return-Path: <[email protected]> Received: **REDACTED** Fri, 03 Aug 2012 06:56:20 -0700 (PDT) Message-ID: <[email protected]> Date: Fri, 03 Aug 2012 06:56:20 -0700 (PDT) From: [email protected] http: //www.example.com

Aunque se trata de un encabezado de correo legal, los agentes de transferencia de correo y los agentes de usuario de correo deben ignorar los campos de encabezado aparentes que no entienden. Y como el encabezado RFC822 continúa hasta la primera línea en blanco y http: parece a una línea de encabezado, se analiza como si fuera un encabezado. Si se le da una nueva línea:

mensaje = ''/nhttp://www.example.com''

Entonces funciona como se esperaba. Aunque el correo electrónico técnicamente solo necesita el "sobre" provisto por smtplib el contenido del correo debe ser más completo si espera que sus destinatarios (y sus remitentes) traten bien el mensaje, probablemente deba usar el módulo de correo electrónico para generar el cuerpo.

adicional

De acuerdo con el más doctest en smtplib.py parece que esta es una característica intencional que permite a la persona que llama de sendmail() anexar al encabezado:

>>> msg = ''''''// ... From: [email protected] ... Subject: testin''... ... ... This is a test '''''' >>> s.sendmail("[email protected]", tolist, msg)

Donde las líneas From: y Subject: son parte de los encabezados "bonitos" que mencioné anteriormente.

Mi script actual me permite enviar correos electrónicos bien, pero solo hay algunos caracteres que no le gustan, particularmente '':'' en este ejemplo.

import smtplib, sys mensaje = sys.argv[1] def mailto(toaddrs, msg): fromaddr = ''myemailblabla'' username = ''thisismyemail'' password = ''122344'' server = smtplib.SMTP(''smtp.gmail.com:587'') server.starttls() server.login(username, password) server.sendmail(fromaddr, toaddrs, msg) server.quit() mailto(''[email protected]'', mensaje)

Si escribo un mensaje de muestra como, digamos "Hi there/n how are you?" funciona bien, pero digamos que intento enviar una url http://www.neopets.com , el correo electrónico se envía en blanco. Creo que el '':'' causa este problema, así que intenté escapar, pero nada.