J'utilise le code de ce lien pour envoyer des pièces jointes dans les notifications par e-mail de notre système;Problèmes de pièces jointes multiples en PL/SQL en utilisant le paquetage utl_smtp
Le problème est que la deuxième pièce jointe est encodant question. Donc, si j'envoie un fichier texte, le texte dans le fichier txt sera tout mashed up .. Comme les 23 premiers caractères sont imprimés correctement, il y a une purée de texte comme 'B • Ú] \ ÈØ] \ <[ÝH Ensuite, il continue avec le texte et la même chose se produit après 23 caractères à nouveau ...
Pour la première pièce jointe, j'imprime la limite MIME;
utl_smtp.write_data(g_mail_conn, chr(13)||chr(10)||chr(13)||chr(10)||'--' || l_boundary ||
chr(13) || chr(10));
utl_smtp.write_data(g_mail_conn, 'Content-Disposition: attachment; filename="test2.txt"' || chr(13) || chr(10));
utl_smtp.write_data(g_mail_conn, 'Content-Transfer-Encoding: base64' || chr(13) || chr(10));
Puis je cours la boucle while que je pris du lien (copié ci-dessous aussi), puis après la boucle, réinitialiser la variable v_offset, alors je mets le même code ci-dessus pour la deuxième limite pour la pièce jointe .. Puis je ferme les limites MIME à la fin avec
utl_smtp.write_data(g_mail_conn,chr(13) || chr(10) || '--' || l_boundary || '--' || chr(13));
Des idées pour lesquelles ce problème se produit?
La boucle While;
<<while_loop>>
while v_offset < v_length loop
dbms_lob.read(p_blob, v_buffer_size, v_offset, v_raw);
utl_smtp.write_raw_data(c, utl_encode.base64_encode(v_raw));
utl_smtp.write_data(c, utl_tcp.crlf);
v_offset := v_offset + v_buffer_size;
end loop while_loop;
hmm ... il semble aussi que si vous faites v_buffer_size: = 57 et v_offset: = 1 alors chaque fichier de taille (x * 58) +1 sera tronqué par le dernier caractère – jareeq