プライマリ・コンテンツに移動

Oracle® Application Express APIリファレンス リリース5.1 E85937-02 |
| 目次 | 索引

前 | 次 |

# 18.6 SENDプロシージャ

このプロシージャは、アプリケーションから外部へ電子メール・メッセージを送信します。このプロシージャを使用して`VARCHAR2`または`CLOB`を`p_body`および`p_body_html`に渡すことができますが、データ型は同じである必要があります。つまり、`CLOB`を`P_BODY`に、`VARCHAR2`を`p_body_html`に渡すことはできません。

`APEX_MAIL.SEND`を使用する際は、次の点に注意してください。

- 1行は1000文字以下にしてください。SMTP/MIME仕様によると、1行は1000文字以下にしてください。この制限に準拠するには、キャリッジ・リターンまたはライン・フィード文字を追加して`p_body`または`p_body_html`パラメータを1000文字以下のチャンクに分割する必要があります。そうしないと、不完全なメッセージ、不要な感嘆符を含むメッセージなど、電子メール・メッセージにエラーが発生します。

- プレーン・テキストおよびHTML電子メール・コンテンツ。値を`p_body_html`ではなく`p_body`に渡すと、プレーン・テキスト・メッセージが作成されます。値を`p_body`および`p_body_html`に渡すと、プレーン・テキストとHTMLの両方のコンテンツを含むマルチパート・メッセージが作成されます。受信者の電子メール・クライアントの設定および機能によって表示内容が決定されます。ほとんどの最新の電子メール・クライアントはHTML形式の電子メールを読むことができますが、セキュリティ問題に対処するため、この機能を無効にしているユーザーがいることに注意してください。

- イメージを使用しないでください。 `<img />`タグを使用して`p_body_html`でイメージを参照する場合、受信者がそのイメージを表示するには、受信者の電子メール・クライアントがそのイメージにアクセスできる必要があることに注意してください。

  たとえば、次のようにネットワーク上にある`hello.gif`というイメージを参照すると想定します。

      <img src="http://someserver.com/hello.gif" alt="Hello" />]

  この例では、イメージは電子メールに添付されるのではなく、電子メールによって参照されます。受信者がこのイメージを表示するには、Webブラウザを使用してこのイメージにアクセスできる必要があります。イメージがファイアウォールの内側にあり、受信者がファイアウォールの外側にいる場合、イメージは表示されません。このため、イメージは使用しないでください。イメージを含める必要がある場合は、イメージにアクセスできない場合にテキストの説明を提供できるようにALT属性を含めるようにしてください。

構文

    APEX_MAIL.SEND(
        p_to                        IN    VARCHAR2,
        p_from                      IN    VARCHAR2,
        p_body                      IN  [ VARCHAR2 | CLOB ],
        p_body_html                 IN  [ VARCHAR2 | CLOB ] DEFAULT NULL,
        p_subj                      IN    VARCHAR2 DEFAULT NULL,
        p_cc                        IN    VARCHAR2 DEFAULT NULL,
        p_bcc                       IN    VARCHAR2 DEFAULT NULL,
        p_replyto                   IN    VARCHAR2);

パラメータ

表18-3 SENDのパラメータ

パラメータ | 説明
--- | ---
`p_to` | 電子メールの送信先となる有効な電子メール・アドレス(必須)。電子メール・アドレスが複数の場合、カンマで区切られたリストを使用します。
`p_from` | 電子メールの送信元となる電子メール・アドレス(必須)。この電子メール・アドレスは有効なアドレスである必要があります。有効でない場合、メッセージは送信されません。
`p_body` | HTML形式ではなく、プレーン・テキスト形式の電子メールの本文(必須)。値が`p_body_html`に渡された場合、受信者に表示されるテキストはこれだけです。値が`p_body_html`に渡されなかった場合、このテキストは、HTMLをサポートしていない電子メール・クライアント、またはHTMLが無効になっている電子メール・クライアントに対してのみ表示されます。キャリッジ・リターンまたはライン・フィード(CRLF)を1000文字ごとに含める必要があります。
`p_body_html` | HTML形式の電子メールの本文。これは、`<html>`タグおよび`<body>`タグを含む完全なHTMLドキュメントである必要があります。キャリッジ・リターンまたはライン・フィード(CRLF)を使用しない場合、1行は1000文字以下にする必要があります。
`p_subj` | 電子メールの件名
`p_cc` | 電子メールの内容のコピー先となる有効な電子メール・アドレス。電子メール・アドレスが複数の場合、カンマで区切られたリストを使用します。
`p_bcc` | 電子メールの内容のブラインド・コピー先となる有効な電子メール・アドレス。電子メール・アドレスが複数の場合、カンマで区切られたリストを使用します。
`p_replyto` | 返信先のメール・ヘッダーのアドレス。このパラメータの使用方法は次のとおりです。 `p_replyto`パラメータを省略した場合、返信先のメール・ヘッダーには`p_from`パラメータに指定された値が設定されます `p_replyto`パラメータに`NULL`を指定した場合、返信先のメール・ヘッダーにはNULLが設定されます。この結果、電子メールの自動返信は行われません `p_replyto`パラメータにNULL以外の値(有効な電子メール・アドレスなど)を指定した場合、メッセージを送信しても、自動返信は指定されたアドレスに対して行われます(有効な電子メール・アドレスなど)

例

次の例では、`APEX_MAIL.SEND`を使用してアプリケーションからプレーン・テキストの電子メール・メッセージを送信する方法を示します。

    -- Example One: Plain Text only message
    DECLARE
        l_body      CLOB;
    BEGIN
        l_body := 'Thank you for your interest in the APEX_MAIL
    package.'||utl_tcp.crlf||utl_tcp.crlf;
        l_body := l_body ||'  Sincerely,'||utl_tcp.crlf;
        l_body := l_body ||'  The Application Express Dev Team'||utl_tcp.crlf;
        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_subj     => 'APEX_MAIL Package - Plain Text message');
    END;
    /

次の例では、`APEX_MAIL.SEND`を使用してアプリケーションからHTML形式の電子メール・メッセージを送信する方法を示します。キャリッジ・リターンまたはライン・フィード(CRLF)を 1000文字ごとに含める必要があります。次の例では、`utl_tcp.crlf`を使用します。

    -- Example Two: Plain Text / HTML message
    DECLARE
        l_body      CLOB;
        l_body_html CLOB;
    BEGIN
        l_body := 'To view the content of this message, please use an HTML enabled mail client.'||utl_tcp.crlf;

        l_body_html := '<html>
            <head>
                <style type="text/css">
                    body{font-family: Arial, Helvetica, sans-serif;
                        font-size:10pt;
                        margin:30px;
                        background-color:#ffffff;}

                    span.sig{font-style:italic;
                        font-weight:bold;
                        color:#811919;}
                 </style>
             </head>
             <body>'||utl_tcp.crlf;
        l_body_html := l_body_html ||'<p>Thank you for your interest in the <strong>APEX_MAIL</strong> package.</p>'||utl_tcp.crlf;
        l_body_html := l_body_html ||'  Sincerely,<br />'||utl_tcp.crlf;
        l_body_html := l_body_html ||'  <span class="sig">The Application Express Dev Team</span><br />'||utl_tcp.crlf;
        l_body_html := l_body_html ||'</body></html>';
        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      => 'APEX_MAIL Package - HTML formatted message');
    END;
    /