Error adjuntando archivos grandes email API Graph

Antonio Soriano 0 Puntos de reputación
2024-03-01T17:43:06.7733333+00:00

Tengo una aplicacion que envía mails utilizando la API de Graph, cuando intento enviar un adjunto de más de 3MB, lo hacemos creando una upload session y subiendo bloques de 3MB hasta completar el tamaño del fichero.

Normalmente funciona correctamente (Hasta 20MB-25MB), pero para archivos muy grandes estamos recibiendo el error:

"The message exceeds the maximum supported size"

Esto nos ocurre con ficheros de mas de 30-35MB, cuando se supone que la API acepta ficheros de hasta 150MB

Además, también nos ocurre cuando hay varios adjuntos que suman más de 30-35MB (por ejemplo si tengo dos adjuntos de 20MB, el primero lo crea bien, pero el segundo no termina de adjuntarlo y devuelve el mismo error)

Este es el código del bucle que envía el fichero por bloques:

	
	url = upload_session_resp.json()["uploadUrl"]
    start_pos = 0
    bytes_per_call = 3000000
    while start_pos < total_len:
        end_pos = start_pos + bytes_per_call
        data = file_bytes[start_pos:end_pos]
        headers = {            # 'Authorization': 'Bearer {}'.format(token),
            'Content-Type': 'application/octet-stream',
            "Content-Length": str(len(data)),
            "Content-Range": "bytes {}-{}/{}".format(start_pos, start_pos + len(data) - 1, total_len)
        }
        response = requests.put(url, headers=headers, data=data, timeout=15)
        if response.status_code == 201:
            break # adjunto creado correctamente
        elif response.status_code != 200:
            err_text = str(response.text)
            if "The message exceeds the maximum supported size" in err_text or "ErrorAttachmentSizeShouldNotBeMoreThanMaximumSize" in err_text:
                raise AttachmentTooBig()
            else:
                raise Exception("Error adding attachment\ntext: {}\nStatus: {}".format(
                response.text, response.status_code))
        start_pos = end_pos
Azure
Azure
Plataforma e infraestructura de informática en la nube para crear, implementar y administrar aplicaciones y servicios a través de una red mundial de centros de datos administrados por Microsoft.
517 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Jonathan Pereira Castillo 11,860 Puntos de reputación Proveedor de Microsoft
    2025-01-20T22:06:38.16+00:00

    ¡Hola Antonio Soriano!

    Esperamos que este mensaje te encuentre bien.

    Lamentamos sinceramente la demora en abordar tu tema en este foro.  

    Aquí tienes algunos pasos rápidos para intentar resolver el problema:

    1. Verifica el tamaño total del mensaje:
      • Asegúrate de que el tamaño total del mensaje, incluidos todos los adjuntos, no exceda los 150 MB.
    2. Divide los archivos en partes más pequeñas:
      • Intenta dividir los archivos en partes más pequeñas y sube cada parte por separado.
    3. Revisa los límites de la API:
      • Asegúrate de que estás utilizando la API correcta y que los límites de tamaño están configurados adecuadamente.
    4. Optimiza el código de subida:
      • Revisa y optimiza el código para manejar mejor los errores y las excepciones durante la subida.

    Espero que esto te ayude. ¡Buena suerte!

    Si no recibimos una respuesta tuya en los próximos días, procederemos a cerrar el tema. Sin embargo, queremos asegurarte que siempre estamos disponibles para cualquier asistencia que puedas necesitar.

    Agradecemos tu comprensión y estamos aquí para ayudar en lo que sea necesario.

    Estaré atento a tu respuesta.,

     Jonathan

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.