utl_smtp を使用してメールを送信する手順があります。送信できるメール本文の最大サイズは? メール本文のサイズがこの制限を超える場合、どうすれば送信できますか?
2 に答える
チャンクで送信するだけです:
l_offset := 1;
l_amount := 1900;
utl_smtp.open_data(l_connection);
while l_offset < dbms_lob.getlength(l_body_html) loop
utl_smtp.write_data(l_connection,
dbms_lob.substr(l_body_html,l_amount,l_offset));
l_offset := l_offset + l_amount ;
l_amount := least(1900,dbms_lob.getlength(l_body_html) - l_amount);
end loop;
Oracleドキュメントから:
ルールと制限 APIによって制限や範囲チェックが課されることはありません。ただし、SMTPのさまざまな要素に関する次のサイズ制限に注意する必要があります。これらの制限を超えるデータを送信すると、サーバーからエラーが返される場合があります。
表178-5SMTPサイズの制限
要素| サイズ制限
ユーザー| ユーザー名の最大全長は64文字です。
ドメイン| ドメイン名または番号の最大全長は64文字です。
パス| リバースパスまたはフォワードパスの最大全長は256文字です(句読点と要素の区切り文字を含む)。
コマンドライン| コマンドワードとを含むコマンドラインの最大全長は512文字です。
返信行| 返信コードとを含む返信行の最大全長は512文字です。
テキスト行| を含むテキスト行の最大全長は1000文字です(ただし、透明性のために複製された先頭のドットはカウントされません)。
受信者バッファ| バッファリングする必要のある受信者の最大総数は100人の受信者です。
とにかく、あなたのメール本文が大きすぎると、宛先はそれを拒否すると思います...
更新 とにかく、電子メールで非常に大きなデータを送信する場合は、何かが間違っています。別の解決策を使用する必要があります。データベースからデータを読み取り、わかりやすい形式でユーザーに提示するクライアント。oracle Discovererがあります。または、javaまたはphpを使用してアプリケーションを開発できます...多くのオプションがあります...