我创建了通过 pl/sql oracle 发送邮件的程序。我将图像 (.png) 添加为邮件附件,并在邮件页脚(公司徽标)中打开它。大多数邮件都是正确的,但有时页脚中的图像模糊。我不知道如何解决它:/ 这是不正确的页脚图像的示例:
这是带有页脚和附件的代码的一部分
UTL_SMTP.write_data(v_connection, 'MIME-Version: 1.0' || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection,
'Content-Type: multipart/mixed; boundary="' ||
c_mime_boundary || '"' || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection, UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection,
'This is a multi-part message in MIME format.' ||
UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection,
'--' || c_mime_boundary || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection,
'Content-Type: text/html; charset="UTF-8"' ||
UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection, UTL_TCP.CRLF);
-----------------------------------
ClobLen := DBMS_LOB.GETLENGTH(p_message);
LOOP
EXIT WHEN offset > ClobLen;
DBMS_LOB.READ(p_message || '<br><br>' || p_footer
, amount, offset, BUFFER);
UTL_SMTP.write_raw_data(v_connection, UTL_RAW.cast_to_raw(BUFFER));
offset := offset + amount;
END LOOP;
UTL_SMTP.write_data(v_connection, UTL_TCP.CRLF);
IF p_attach_name IS NOT NULL THEN
UTL_SMTP.write_data(v_connection, '--' || c_mime_boundary || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection, 'Content-Type: ' || p_attach_mime || '; name="' || p_attach_name || '"' || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection, 'Content-Transfer-Encoding: base64' || UTL_TCP.crlf);
UTL_SMTP.write_data(v_connection, 'Content-Disposition: attachment; filename="' || p_attach_name || '"' || UTL_TCP.crlf || UTL_TCP.crlf);
FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_attach_blob) - 1 )/offset) LOOP
UTL_SMTP.write_data(v_connection, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_attach_blob, offset, i * offset + 1))) || UTL_TCP.crlf);
END LOOP;
UTL_SMTP.write_data(v_connection, UTL_TCP.crlf);
END IF;
-----------------------------------
UTL_SMTP.close_data(v_connection);
UTL_SMTP.quit(v_connection);
有多个地方可能会出现错误,您需要进行一些调试来找出错误来自何处。
将数据库中图像的字节与收到的电子邮件中图像的字节进行比较 - 它们是否相同?
如果是这样,那么问题是:
在这两种情况下,这都是数据问题,而不是代码问题。
如果不是,那么数据库和收件人之间存在问题。
在后一种情况下,将数据库字节与发送电子邮件中的字节进行比较 - 它们是否相同?
在后一种情况下,将放入数据库的数据与从数据库读取的数据进行比较。
INSERT
编辑时或在 SELECT
编辑时正在被转换,您需要找出哪一个。