31.8 SENDファンクションのシグネチャ1
このファンクションは、アプリケーションから外部へ電子メール・メッセージを送信します。このファンクションを使用してVARCHAR2
またはCLOB
をp_body
およびp_body_html
に渡すことができますが、データ型は同じである必要があります。つまり、CLOB
をP_BODY
に、VARCHAR2
をp_body_html
に渡すことはできません。
このファンクションは、NUMBER
を戻します。戻されるNUMBER
は、メール・メッセージに関連付けられた一意の数値識別子です。
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ブラウザを使用してこのイメージにアクセスできる必要があります。イメージがファイアウォールの内側にあり、受信者がファイアウォールの外側にいる場合、イメージは表示されません。
別の方法としては、
APEX_MAIL.ADD_ATTACHMENT
をコールするときにp_content_id
パラメータを指定することもできます。その場合はインライン添付ファイルが作成され、これは次のように参照できます。<img src="cid:hello_content_id" alt="Hello" />
これによって結果となる電子メールのサイズが非常に大きくなる可能性があることや、クライアントで必ずインライン・イメージが自動表示されるわけではないことに注意してください。
これらの理由から、イメージの使用は避けてください。イメージを含める必要がある場合は、そのイメージがアクセス不可の場合や表示されない場合にテキスト説明が表示されるように
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)
RETURN NUMBER;
パラメータ
表31-5 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 |
返信先のメール・ヘッダーのアドレス。このパラメータの使用方法は次のとおりです。
|
例
次の例では、APEX_MAIL.SEND
を使用してアプリケーションからプレーン・テキストの電子メール・メッセージを送信し、一意のメッセージIDを戻す方法を示します。
-- Example One: Plain Text only message
DECLARE
l_body CLOB;
l_id NUMBER;
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;
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_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;
l_id NUMBER;
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>';
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 => 'APEX_MAIL Package - HTML formatted message');
END;
/
親トピック: APEX_MAIL