Ao usar o Database Mail para enviar emails com anexos, você precisará garantir que o tamanho do arquivo de anexo esteja dentro do tamanho permitido do arquivo de anexo.
Se você precisar enviar anexos maiores que o limite de anexos, precisará aumentar esse limite.
Felizmente, aumentar o tamanho do arquivo de anexo permitido pode ser feito com uma única linha de código T-SQL.
O erro
Aqui está o erro que você receberá se tentar enviar um anexo maior do que o tamanho de arquivo de anexo permitido:
Msg 22051, Level 16, State 1, Line 0 File attachment or query results size exceeds allowable value of 1000000 bytes.
Verifique o limite
Se você ainda não recebeu um erro, talvez não saiba qual é o limite. Você pode usar o
sysmail_help_configure_sp
procedimento armazenado no msdb banco de dados para verificar o limite de tamanho do arquivo de anexo. EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Resultado:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 1000000 | Default maximum file size | +-------------+--------------+---------------------------+
Neste exemplo eu passei
MaxFileSize
como argumento para restringir os resultados apenas à opção de configuração que me interessa. Você também pode usar sysmail_help_configure_sp
procedimento sem nenhum argumento para retornar todas as opções de configuração. Alterar o limite
Você pode alterar o limite de tamanho do arquivo de anexo com o
sysmail_configure_sp
procedimento armazenado. EXEC msdb.dbo.sysmail_configure_sp 'MaxFileSize','3000000';
Agora, quando executamos
sysmail_help_configure_sp
novamente, vemos o novo valor. EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Resultado:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 3000000 | Default maximum file size | +-------------+--------------+---------------------------+
Observe que a descrição permaneceu a mesma. Nesse caso, é um pouco enganoso porque 1000000 é o tamanho máximo do arquivo padrão - não 4000000.
Você pode alterar a descrição com o mesmo procedimento. Na verdade, você pode especificar o parâmetro
name=value
pares também, se você preferir (isso também é verdade para o sysmail_configure_sp
procedimento). Vamos fazer de novo, mas desta vez atualizarei a descrição e usarei o
name=value
pares. EXECUTE msdb.dbo.sysmail_configure_sp
@parameter_name = 'MaxFileSize',
@parameter_value = '4000000',
@description = 'Current maximum file size';
Agora, quando executamos
sysmail_help_configure_sp
novamente, vemos o novo valor. EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = 'MaxFileSize';
Resultado:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 4000000 | Current maximum file size | +-------------+--------------+---------------------------+