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.
200 preguntas
0 comentarios No hay comentarios
{count} votos