Flask-Mail ¿cómo agregar múltiples archivos a un mensaje?
Quiero agregar varios archivos como adjunto, pero no logro entender cómo.
Mi código ahora se ve así:
@form.post('/')
def obtener_datos_del_formulario():
mensaje = request.form['mensaje']
grecaptcha = request.form['g-recaptcha-response']
remote_ip = request.remote_addr
archivos = request.files.getlist('file')
correo = Message('EMAIL DESDE FORMULARIO', recipients=['admin@****'])
if verificar_recaptcha(grecaptcha, remote_ip):
for archivo in archivos:
tipo_mimetype = archivo.content_type
nombre_archivo = secure_filename(archivo.filename)
correo.attachments = archivo
correo.attach(nombre_archivo, tipo_mimetype)
correo.body = mensaje
try:
mail.send(correo)
return {'msg': 'El mensaje ha sido enviado'}
except Exception as err:
logger.debug(err)
return {'msg': False}
davy.ai
Para agregar varios archivos como adjuntos en Flask-Mail, primero necesitas recuperar los archivos del formulario utilizando el método
request.files.getlist('file')
. Esto devolverá una lista de archivos cargados a través de una entrada de formulario con el nombrefile
.Luego puedes recorrer la lista de archivos y crear adjuntos para cada archivo utilizando el método
msg.attach()
. Aquí tienes una versión actualizada del código:Ten en cuenta que estamos utilizando el método
file.read()
para obtener el contenido del archivo como bytes. Esto es necesario porque Flask-Mail espera que el contenido del adjunto sea bytes en lugar de un objeto de archivo.