Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] enviar email con archivo adjunto

Estas en el tema de enviar email con archivo adjunto en el foro de Python en Foros del Web. Buenas y gracias de antemano.... quisiera ver si alguno me pueda brinda una ayuda con este tema que me tiene dando muchas vueltas recien ando ...
  #1 (permalink)  
Antiguo 04/03/2014, 16:16
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
enviar email con archivo adjunto

Buenas y gracias de antemano.... quisiera ver si alguno me pueda brinda una ayuda con este tema que me tiene dando muchas vueltas
recien ando comenzando en el lenguaje de python asi que aun no entiendo del todo bien la sintaxis del todo.
ya e logrado enviar un mensaje sin un archivo pero el problema a comenzado desde que intente hacerlo con el.... si alguno me puede decir que esta mal le agradeceria mucho....
tengo este codigo html
Código HTML:
Ver original
  1. {% extends "estructurausu.html" %}
  2. {% block contenido %}
  3. <h2> Ingrese mensaje </h2>
  4.     <form action="{% url 'usuario.views.sendemail' %}" method="POST" enctype="multipart/form-data">
  5.     {% csrf_token %}
  6.     <p> Titulo: {{ form.titulo }}</p>
  7.     <p> Contenido: {{ form.contenido }}</p>
  8.     <p> Email: {{ form.email }}</p>
  9.     <p> Archivo: <input type="file" name="imagen"></p>
  10.     <p><input type="submit" value="Enviar"></p>
  11.     </form>
  12. {% endblock %}
el cual me llevaa esta funcion
Código Python:
Ver original
  1. def sendemail2(request):
  2.     p = request.POST
  3.     d = dict(form = Formularioemail(), usuario = request.user)
  4.     d.update(csrf(request))
  5.     if p:
  6.         files = request.FILES
  7.         msg = MIMEMultipart()
  8.         msg['From'] = '[email protected]'
  9.         msg['To'] = COMMASPACE.join(p["email"])
  10.         msg['Date'] = formatdate(localtime=True)
  11.         msg['Subject'] = p["titulo"]
  12.         msg.attach( MIMEText(p["contenido"]) )
  13.         for f in files:
  14.             part = MIMEBase('application', "octet-stream")
  15.             part.set_payload( open(f,"rb").read() )
  16.             Encoders.encode_base64(part)
  17.             part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
  18.             msg.attach(part)
  19.  
  20.         smtp = smtplib.SMTP("localhost")
  21.         smtp.sendmail('[email protected]', p["email"], msg.as_string())
  22.         smtp.close()
  23.     return render_to_response("email.html",d)
eso me trae un error de "No such file or directory: u'imagen'"
imagino el error es con request.FILES pero ni idea de como deba ser... si alguno me ayuda agradeceria mucho
porcierto el codigo lo saque de esta pagina
http://stackoverflow.com/questions/3362600/how-to-send-email-attachments-with-python
  #2 (permalink)  
Antiguo 04/03/2014, 16:47
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: enviar email con archivo adjunto

Usa las funciones que django tiene para eviar correos: https://docs.djangoproject.com/en/dev/topics/email/

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 04/03/2014, 17:04
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: enviar email con archivo adjunto

bueno gracias tienes razon es mas simpleme pero solo lo logro con una ruta estatica de mi pc... como hago para en el message.attach_file mandar la ruta que recivire del request y es q no entiendo como obtenerla ...
si me pudiera responder eso ultimo le agradeceria mucho
peron por las molestias y gracias denuevo

Última edición por andresgarciadev; 04/03/2014 a las 17:14
  #4 (permalink)  
Antiguo 04/03/2014, 17:17
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: enviar email con archivo adjunto

¿La ruta del archivo del cliente? No se puede.

Tampoco la necesitas, puedes obtener los datos con el método read(): https://docs.djangoproject.com/en/de.../file-uploads/


Saludos
__________________
Grupo Telegram Docker en Español
  #5 (permalink)  
Antiguo 04/03/2014, 17:38
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: enviar email con archivo adjunto

bueno muchas gracias, sigo con problemas respecto al request.FILES['file'] que no me reconoce al parecer el file pero bueno.... eso ya lo intentare yo... muchas gracias por lo demas ^^
perdon por las molestias xD
  #6 (permalink)  
Antiguo 04/03/2014, 17:53
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: enviar email con archivo adjunto

Si tienes un campo: <input type="file" name="imagen"> entonces es así: request.FILES['image'].

Saludos
__________________
Grupo Telegram Docker en Español
  #7 (permalink)  
Antiguo 05/03/2014, 08:59
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: enviar email con archivo adjunto

LOL XD no puedo creer q cometi un error tan tonto :c
pense q file hacia un referencia a un campo predeterminado xD... no pense q era el name
gracias denuevo xD
y alfin me funciono *-* gracias por todo xD

Última edición por andresgarciadev; 05/03/2014 a las 10:57

Etiquetas: email
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:18.