31.2 ADD_ATTACHMENTプロシージャのシグネチャ1

このプロシージャは、外部への電子メール・メッセージにBLOBタイプの添付を追加します。1つの電子メールに複数の添付を追加するには、1つの電子メール・メッセージに対してAPEX_MAIL.ADD_ATTACHMENTを繰り返しコールします。

構文

APEX_MAIL.ADD_ATTACHMENT (
    p_mail_id           IN    NUMBER,
    p_attachment        IN    BLOB,
    p_filename          IN    VARCHAR2,
    p_mime_type         IN    VARCHAR2
    p_content_id        IN    VARCHAR2    DEFAULT NULL );

パラメータ

表31-1 ADD_ATTACHMENTのパラメータ

パラメータ 説明
p_mail_id 電子メールに関連付けられている数値ID。これは、電子メールの本文を作成するAPEX_MAIL.SENDのコールから戻される数値識別子です。
p_attachment 電子メール・メッセージに添付するバイナリ・コンテンツを含むBLOB変数。
p_filename 電子メール添付に関連付けられているファイル名。
p_mime_type 電子メールの添付に関連付けられる有効なMIMEタイプ(またはインターネット・メディア・タイプ)。
p_content_id

オプションの添付ファイル識別子。nullでない場合、そのファイルはインラインで添付されます。その後、その添付ファイルを、cidを使用して電子メール本文のHTMLにおいて参照できます。

ノート: インライン化されたイメージの自動表示はすべての電子メール・クライアントでサポートされているわけではないことに注意してください。

例1

次の例に、APEX_APPLICATION_FILESに格納されているファイルにアクセスする方法、およびこれらを外部への電子メール・メッセージに追加する方法を示します

DECLARE
    l_id NUMBER;
BEGIN
    l_id := APEX_MAIL.SEND(
        p_to        => 'fred@flintstone.com',
        p_from      => 'barney@rubble.com',
        p_subj      => 'APEX_MAIL with attachment',
        p_body      => 'Please review the attachment.',
        p_body_html => '<b>Please</b> review the attachment');
    FOR c1 IN (SELECT filename, blob_content, mime_type 
        FROM APEX_APPLICATION_FILES
        WHERE ID IN (123,456)) LOOP

        APEX_MAIL.ADD_ATTACHMENT(
            p_mail_id    => l_id,
            p_attachment => c1.blob_content,
            p_filename   => c1.filename,
            p_mime_type  => c1.mime_type);
        END LOOP;
    COMMIT;
END;
/

例2

この例では、コンテンツ識別子の使用によってファイルをインラインで添付する方法と、電子メールのHTMLにおいてその添付ファイルを参照する方法を示します。

DECLARE
  l_id number;
  l_body clob;
  l_body_html clob;
  l_content_id varchar2(100) := 'my-inline-image';
  l_filename varchar2(100);
  l_mime_type varchar2(100);
  l_image blob;
BEGIN
  l_body := 'To view the content of this message, please use an HTML enabled mail client.' || utl_tcp.crlf;

  l_body_html := '<html><body>' || utl_tcp.crlf ||
                 '<p>Here is the image you requested.</p>' || utl_tcp.crlf ||
                 '<p><img src="cid:' || l_content_id || '" alt="Requested Image"></p>' || utl_tcp.crlf ||
                 '<p>Thanks,<br />' || utl_tcp.crlf ||
                 'The Application Express Dev Team<br />' || utl_tcp.crlf ||
                 '</body></html>';
  l_id := apex_mail.send (
    p_to => 'some_user@somewhere.com', -- change to your email address
    p_from => 'some_sender@somewhere.com', -- change to a real senders email address
    p_body => l_body,
    p_body_html => l_body_html,
    p_subj => 'Requested Image' );

  select filename, mime_type, blob_content
    into l_filename, l_mime_type, l_image
    from apex_application_files
   where id = 123;

  apex_mail.add_attachment(
    p_mail_id => l_id,
    p_attachment => l_image,
    p_filename => l_filename,
    p_mime_type => l_mime_type,
    p_content_id => l_content_id );

  COMMIT;
END;