<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>〈AUTH〉彙整頁面 - MIS 的流水年華</title>
	<atom:link href="https://jameschien.mooo.com/wordpress/tag/auth/feed/" rel="self" type="application/rss+xml" />
	<link>https://jameschien.mooo.com/wordpress/tag/auth/</link>
	<description>流水記事</description>
	<lastBuildDate>Tue, 22 Feb 2011 09:44:31 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>ORACLE PL/SQL 透過 smtp auth 發送有附件的 mail</title>
		<link>https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/</link>
					<comments>https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/#comments</comments>
		
		<dc:creator><![CDATA[James]]></dc:creator>
		<pubDate>Wed, 12 May 2010 06:31:50 +0000</pubDate>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[AUTH]]></category>
		<category><![CDATA[ORACLE]]></category>
		<category><![CDATA[PL]]></category>
		<category><![CDATA[SMTP]]></category>
		<guid isPermaLink="false">http://jameschien.no-ip.biz/wordpress/?p=21</guid>

					<description><![CDATA[<p>create or replace PROCEDURE sendmail(func IN VARCHAR2,f &#8230; <a href="https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/" class="more-link">閱讀全文 <span class="screen-reader-text">ORACLE PL/SQL 透過 smtp auth 發送有附件的 mail</span></a></p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/">ORACLE PL/SQL 透過 smtp auth 發送有附件的 mail</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></description>
										<content:encoded><![CDATA[<p>create or replace<br />
PROCEDURE sendmail(func IN VARCHAR2,fname IN VARCHAR2)<br />
AS<br />
v_From      VARCHAR2(80) := &#8216;admin@test.com.tw&#8217;;<br />
v_list      VARCHAR2(255) := &#8216;a@test.com.tw,b@test.com.tw,c@test.com.tw,d@test.com.tw&#8217;;<br />
v_Subject   VARCHAR2(80);<br />
v_Mail_Host VARCHAR2(30) := &#8216;mailhost.test.com.tw&#8217;;<br />
v_Mail_Conn utl_smtp.Connection;<br />
v_user      VARCHAR2(20) := &#8216;admin&#8217;;<br />
v_pass      VARCHAR2(20) := &#8216;admin_password&#8217;;<br />
crlf        VARCHAR2(2)  := chr(13)||chr(10);<br />
f           utl_file.file_type;<br />
v_func      BOOLEAN;<br />
v_msg       VARCHAR2(255);<br />
l_tablen    BINARY_INTEGER;<br />
l_tab       DBMS_UTILITY.uncl_array;<br />
BEGIN<br />
case func<br />
WHEN &#8216;safty_inv&#8217; THEN<br />
v_func := safty_inv(fname);<br />
v_Subject := &#8216;郵件通知&#8217;;<br />
END case;<br />
&#8211;呼叫function產生要傳送的文字/html檔<br />
IF (v_func) THEN<br />
&#8211;連接郵件主機傳送smtp驗證資訊<br />
v_Mail_Conn := utl_smtp.Open_Connection(v_Mail_Host, 25);<br />
UTL_SMTP.ehlo(v_Mail_Conn, v_Mail_Host);<br />
utl_smtp.command(v_Mail_Conn, &#8216;AUTH LOGIN&#8217;);<br />
UTL_SMTP.command(v_Mail_Conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));<br />
UTL_SMTP.command(v_Mail_Conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));<br />
&#8211;寄件人<br />
utl_smtp.Mail(v_Mail_Conn, v_From);<br />
&#8211;寄送給複數收件人<br />
DBMS_UTILITY.comma_to_table (<br />
list   =&gt; v_list,<br />
tablen =&gt; l_tablen,<br />
tab    =&gt; l_tab);<br />
FOR i IN 1 .. l_tablen LOOP<br />
utl_smtp.Rcpt(v_Mail_Conn, l_tab(i));<br />
END LOOP;<br />
&#8211;組成郵件檔頭<br />
utl_smtp.open_data(v_Mail_Conn);<br />
&#8211;寄件者<br />
UTL_SMTP.write_raw_data(v_mail_conn, utl_raw.cast_to_raw(&#8216;From: &#8216; || v_from || CRLF));<br />
&#8211;收件者<br />
DBMS_UTILITY.comma_to_table (<br />
list   =&gt; v_list,<br />
tablen =&gt; l_tablen,<br />
tab    =&gt; l_tab);<br />
FOR i IN 1 .. l_tablen LOOP<br />
UTL_SMTP.write_raw_data(v_mail_conn, utl_raw.cast_to_raw(&#8216;To: &#8216;   || l_tab(i) || CRLF));<br />
END LOOP;<br />
&#8211;UTF8主旨&amp;指定郵件本文MIME格式/編碼方式<br />
UTL_SMTP.write_raw_data(v_mail_conn, utl_raw.cast_to_raw(&#8216;Subject: =?utf-8?B?&#8217;|| UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_Subject))) || &#8216;?=&#8217; || CRLF));<br />
utl_smtp.write_data(v_mail_conn,&#8217;MIME-Version: 1.0&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Type: multipart/mixed; boundary=&#8221;&#8216;|| &#8216;boundary_str&#8217; ||'&#8221;&#8216;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn, CRLF);<br />
&#8211;本文第一部份,郵件文字內容<br />
utl_smtp.write_data(v_mail_conn,&#8217;&#8211;boundary_str&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;MIME-Version: 1.0&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Type: text/plain; charset=&#8221;utf-8&#8243;&#8216;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Transfer-Encoding: 8bit&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn, &#8221; || CRLF); &#8211;空行<br />
utl_smtp.write_data(v_mail_conn, CRLF);<br />
&#8211;第二部份:附件內容&amp;指定MIME格式/編碼方式<br />
utl_smtp.write_data(v_mail_conn,&#8217;&#8211;boundary_str&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Type: text/plain;&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;        name=&#8221;&#8216;||fname||'&#8221;&#8216;|| crlf);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Transfer-Encoding: 8bit&#8217;|| CRLF);<br />
utl_smtp.write_data(v_mail_conn,&#8217;Content-Disposition: attachment;&#8217;|| crlf);<br />
utl_smtp.write_data(v_mail_conn,&#8217;        filename=&#8221;&#8216;||fname||'&#8221;&#8216;|| crlf);<br />
utl_smtp.write_data(v_mail_conn, crlf);<br />
&#8211;讀取來源文字類型附件&amp;一行一行寫入<br />
f := utl_file.fopen(&#8216;REPOUT&#8217;,fname,&#8217;R&#8217;);<br />
IF utl_file.is_open(f) THEN<br />
LOOP<br />
BEGIN<br />
utl_file.get_line(f, v_msg);<br />
UTL_SMTP.write_raw_data(v_mail_conn, utl_raw.cast_to_raw(v_msg || crlf));<br />
&#8211;例外處理<br />
EXCEPTION<br />
WHEN NO_DATA_FOUND THEN<br />
EXIT;<br />
END;<br />
END LOOP;<br />
ELSE<br />
utl_file.fclose(f);<br />
END IF;<br />
utl_smtp.write_data(v_mail_conn, crlf);<br />
utl_smtp.write_data(v_mail_conn,&#8217;&#8211;boundary_str&#8211;&#8216;|| CRLF);<br />
UTL_SMTP.close_data(v_mail_conn);<br />
&#8211;結束連線<br />
utl_smtp.Quit(v_mail_conn);<br />
END IF;<br />
&#8211;寄送錯誤處理<br />
EXCEPTION<br />
WHEN utl_smtp.Transient_Error OR utl_smtp.Permanent_Error then<br />
raise_application_error(-20000, &#8216;Unable to send mail: &#8216;||sqlerrm);<br />
END;</p>
<p>〈<a href="https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/">ORACLE PL/SQL 透過 smtp auth 發送有附件的 mail</a>〉這篇文章最早發佈於《<a href="https://jameschien.mooo.com/wordpress">MIS 的流水年華</a>》。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jameschien.mooo.com/wordpress/2010/05/12/oracle-plsql-%e9%80%8f%e9%81%8e-smtp-auth-%e7%99%bc%e9%80%81%e6%9c%89%e9%99%84%e4%bb%b6%e7%9a%84-mail/feed/</wfw:commentRss>
			<slash:comments>26</slash:comments>
		
		
			</item>
	</channel>
</rss>
