se for usando PL/SQL tem ser um diretorio do servidor mapeado via objeto
directory como o Chiappa falou.

2009/9/17 Michely Carneiro Carneiro <michelycarne...@yahoo.com.br>

>
>
>
> Vou tentar com um arquivo do servidor.
>
> --- Em qua, 16/9/09, jlchiappa 
> <jlchia...@yahoo.com.br<jlchiappa%40yahoo.com.br>>
> escreveu:
>
> De: jlchiappa <jlchia...@yahoo.com.br <jlchiappa%40yahoo.com.br>>
> Assunto: Re: RES: RES: [oracle_br] Informação e-mail com anexo PL/SQL -
> ORACLE
>
> Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
> Data: Quarta-feira, 16 de Setembro de 2009, 12:56
>
>
>
> pmfji, mas ** talvez ** a questão seja outra : a colega disse "que tenho
> que gerar uma procedure que irá enviar um e-mail com anexo", mas disse
> também "O anexo eu terei que localizar em uma pasta do meu computador" -
> ORA, se esse computador dela não é o servidor aonde roda o banco Oracle, nós
> sabemos que por sí só o utl_file só consegue abrir arquivos disponíveis **
> LOCALMENTE ** , ie, que estejam na MESMA máquina do servidor Oracle.... SE o
> tal arquivo não está na mesma máquina que o servidor, as únicas soluções são
> : OU transferir o tal arquivo pro servidor (via ftp ou o que for), OU ter um
> programinha- cliente na máquina cliente que seja capaz de ler o arquivo e o
> transferir e/ou o gravar no banco (sql*loader talvez, ou escrever algo em
> Java, Forms, ou qquer linguagem que domine e seja capaz), OU se instala e
> configura um software capaz de permitir o servidor acessar a máquina-cliente
> (pode ser Samba, NFS, ou outros)...
>
> []s
>
> Chiappa
>
> --- Em oracle...@yahoogrup os.com.br, Sérgio Luiz Rodrigues Chaves
> <sergio.chaves@ ...> escreveu
> >
> > Michely,
> >
> > O texto que lhe enviei, é apenas um exemplo para que você pudesse
> verificar a aderência da solução ao seu problema, não tinha
> > Imagino que o erro que você se refere é na linha:
> >
> > v_file_handle := utl_file.fopen( p_direct, p_file, 'r' ,32767);
> >
> > O diretório é obrigatório na função Utl_file.Fopen, logo o seu problema
> para o erro no diretório, tem relação direta com o parameter
> > UTL_FILE_DIR no INIT.ORA. Todos os diretórios, tanto de leitura ou
> gravação, devem ser informados neste parameter.
> >
> >
> > Espero que resolva seu problema.
> >
> > Sérgio Chaves.
> >
> >
> >
> > ____________ _________ _________ __
> >
> > De: oracle...@yahoogrup os.com.br em nome de Michely Carneiro Carneiro
> > Enviada: qua 16/9/2009 10:26
> > Para: oracle...@yahoogrup os.com.br
> > Assunto: Re: RES: [oracle_br] Informação e-mail com anexo PL/SQL - ORACLE
> >
> >
> >
> >
> > Sérgio,
> >
> > Quando tento executar dá erro: INVALID DIRECTORY PACTH. Tenho certeza que
> não errei no caminho.
> >
> > Obrigada,
> >
> > Michely
> >
> > --- Em ter, 15/9/09, Sérgio Luiz Rodrigues Chaves <sergio.chaves@ ...
> <mailto:sergio. chaves%40elumini .com.br> > escreveu:
> >
> > De: Sérgio Luiz Rodrigues Chaves <sergio.chaves@ ... <mailto:sergio.
> chaves%40elumini .com.br> >
> > Assunto: RES: [oracle_br] Informação e-mail com anexo PL/SQL - ORACLE
> > Para: oracle...@yahoogrup os.com.br <mailto:oracle_ br%40yahoogrupos .
> com.br>
>  > Data: Terça-feira, 15 de Setembro de 2009, 14:49
> >
> >
> >
> > Michely,
> >
> > Verifique se o código abaixo lhe ajuda:
> >
> > Procedure envia_arquivo(
> > p_to in Varchar2,
> > p_from in Varchar2,
> > p_subject in Varchar2,
> > p_text in Varchar2 default null,
> > p_direct in Varchar2 default null,
> > p_file in Varchar2 default null) is
> > Mensagem Varchar2(32767) ;
> > v_file_handle Utl_file.file_ type;
> > v_line Varchar2(32767) ;
> > wlinha_parm_ relat Varchar2(1000) ;
> > w_num_seq Number(09);
> > wgrava Number(9);
> > wi Number(09):= 0;
> > wsize Number(9);
> > listafile Varchar2(50) ;
> >
> > Cursor Notes is
> > Select 25 port, p.end_ip END_IP, p.nom_ccmail Servidor
> > from ONDE_TEM_IP_ DO_SERVIDOR_ DE_EMAIL p;
> > r_notes notes%rowtype;
> > c utl_smtp.connection ;
> > PROCEDURE send_header( name IN VARCHAR2, header IN VARCHAR2) AS
> > BEGIN
> > utl_smtp.write_ data(c, name || ': ' || header || utl_tcp.CRLF) ;
> > END;
> > BEGIN
> > open notes;
> > fetch notes into r_notes;
> > close notes;
> >
> > c := utl_smtp.open_ connection( r_notes.END_ IP,r_notes. port);
> > utl_smtp.helo( c, R_Notes.Servidor) ;
> > utl_smtp.mail( c, p_from);
> > utl_smtp.rcpt( c, p_to);
> > utl_smtp.open_ data(c);
> > send_header( 'From', p_from);
> > send_header( 'To', p_to);
> > send_header( 'Subject' , p_subject);
> > mensagem:='Mime- Version: 1.0' || utl_tcp.CRLF ||'Content-Type:
> multipart/mixed; boundary="DMW. Boundary. 605592468" ' || utl_tcp.CRLF ||''
> || utl_tcp.CRLF ;
> > utl_smtp.write_ data ( c, mensagem );
> > mensagem :=null;
> > mensagem := mensagem || '--DMW.Boundary. 605592468' || utl_tcp.CRLF
> ||'Content-Type: text/plain; name="message. txt"; charset=US-ASCII' ||
> utl_tcp.CRLF ||'Content-Disposit ion: inline; filename="message. txt"' ||
> utl_tcp.CRLF ||'Content-Transfer -Encoding: 7bit' || utl_tcp.CRLF ||'' ||
> utl_tcp.CRLF;
> > mensagem := mensagem || p_text || utl_tcp.CRLF ;
> > utl_smtp.write_ raw_data( c, utl_raw.cast_ to_raw(mensagem) );
> > v_file_handle := utl_file.fopen( p_direct, p_file, 'r' ,32767);
> > mensagem := utl_tcp.CRLF || '--DMW.Boundary. 605592468' || utl_tcp.CRLF
> ||
> > 'Content-Type: application/ octet-stream; name="' || p_file || '"' ||
> utl_tcp.CRLF ||
> > 'Content-Dispositio n: attachment; filename="' || p_file || '"' ||
> utl_tcp.CRLF ||
> > 'Content-Transfer- Encoding: 7bit' || utl_tcp.CRLF || utl_tcp.CRLF ;
> > utl_smtp.write_ data ( c, mensagem );
> > begin
> > loop
> > utl_file.get_ line(v_file_ handle, v_line);
> > mensagem := v_line || utl_tcp.CRLF ;
> > utl_smtp.write_ data ( c, mensagem );
> > end loop;
> > mensagem := utl_tcp.CRLF;
> > utl_smtp.write_ data ( c, mensagem );
> > utl_file.fclose( v_file_handle) ;
> > exception
> > when utl_file.invalid_ path then
> > dbms_output. put_line( 'Error in opening attachment ');
> > when others then
> > if utl_file.is_ open(v_file_ handle) Then
> > utl_file.fclose( v_file_handle) ;
> > end if;
> > end;
> > mensagem := utl_tcp.CRLF || '--DMW.Boundary. 605592468' || utl_tcp.CRLF
> ||'' || utl_tcp.CRLF;
> > utl_smtp.write_ data ( c, mensagem );
> > v_sql:=NULL;
> > /** monta uma query para gerar planilha dinamicamente **/
> > /* X:=1;
> > While X < 6000 Loop
> > Pos:=Instr(V_ SQL,chr(13) ,X,1);
> > If Pos=0 Then
> > Dbms_Output. Put_Line( Substr(V_ SQL,X));
> > X:=10000;
> > Else
> > Dbms_Output. Put_Line( Substr(V_ SQL,X,(Pos- X)+1));
> > X:=Pos+1;
> > End If;
> > End Loop;*/
> >
> > /***** GRAVA PARAMETROS PARA GERAÇÂO DE PLANILHAS**/
> >
> > mensagem := utl_tcp.CRLF || '--DMW.Boundary. 605592468' || utl_tcp.CRLF
> ||
> > 'Content-Type: application/ octet-stream; name="' || LISTAFILE || '"' ||
> utl_tcp.CRLF ||
> > 'Content-Dispositio n: attachment; filename="' || LISTAFILE || '"' ||
> utl_tcp.CRLF ||
> > 'Content-Transfer- Encoding: 7bit' || utl_tcp.CRLF || utl_tcp.CRLF ;
> > utl_smtp.write_ raw_data( c, utl_raw.cast_ to_raw(mensagem) );
> >
> > BEGIN
> > /** PROCEDIMENTO PARA GERAÇÃO DE PLANILHAS ***/
> > v_file_handle := utl_file.fopen( p_direct, LISTAFILE, 'r' );
> > begin
> > loop
> > utl_file.get_ line(v_file_ handle, v_line);
> > mensagem := v_line || utl_tcp.CRLF ;
> > utl_smtp.write_ data ( c, mensagem );
> > end loop;
> > mensagem := utl_tcp.CRLF;
> > utl_smtp.write_ data ( c, mensagem );
> > utl_file.fclose( v_file_handle) ;
> > exception
> > when utl_file.invalid_ path then
> > dbms_output. put_line( 'Error in opening attachment ');
> > when others then
> > if utl_file.is_ open(v_file_ handle) Then
> > utl_file.fclose( v_file_handle) ;
> > end if;
> > end;
> > exception
> > when OTHERS then
> > NULL;
> > END;
> > end if;
> > mensagem := mensagem || '--DMW.Boundary. 605592468' || utl_tcp.CRLF ||''
> || utl_tcp.CRLF;
> > utl_smtp.write_ data ( c, mensagem );
> > utl_smtp.close_ data(c);
> > utl_smtp.quit( c);
> > EXCEPTION
> > WHEN utl_smtp.transient_ error OR utl_smtp.permanent_ error THEN
> > utl_smtp.quit( c);
> > raise_application_ error(-20000,
> > 'Failed to send mail due to the following error: ' || sqlerrm);
> > END;
> > FUNCTION TROCAACENTOPORCODIG OHTML(
> > WTEXTO VARCHAR2) RETURN VARCHAR2 IS
> > -- LOCAL VARIABLES HERE
> > WI NUMBER;
> > WSIZE NUMBER;
> > WRETORNO VARCHAR2(32767) ;
> > WCARACTER CHAR;
> > BEGIN
> > WI:=0;
> > WSIZE:=LENGTH( WTEXTO);
> > IF WSIZE!=0 THEN
> > WCARACTER:=' ';
> > FOR WI IN 1..WSIZE LOOP
> > WCARACTER := SUBSTR(WTEXTO, WI,1);
> > IF (WCARACTER='á ') THEN
> > WRETORNO := WRETORNO || '&aacute;';
> > ELSIF(WCARACTER= 'Á') THEN
> > WRETORNO := WRETORNO || '&Aacute;';
> > ELSIF(WCARACTER= 'ç') THEN
> > WRETORNO := WRETORNO || '&ccedil;';
> > ELSIF(WCARACTER= 'ã') THEN
> > WRETORNO := WRETORNO || '&atilde;';
> > ELSIF(WCARACTER= 'é') THEN
> > WRETORNO := WRETORNO || '&eacute;';
> > ELSIF(WCARACTER= 'ê') THEN
> > WRETORNO := WRETORNO || '&ecirc;';
> > ELSIF(WCARACTER= 'í') THEN
> > WRETORNO := WRETORNO || '&iacute;';
> > ELSIF(WCARACTER= 'ó') THEN
> > WRETORNO := WRETORNO || '&oacute;';
> > ELSIF(WCARACTER= 'ô') THEN
> > WRETORNO := WRETORNO || '&ocirc;';
> > ELSIF(WCARACTER= 'õ') THEN
> > WRETORNO := WRETORNO || '&otilde;';
> > ELSIF(WCARACTER= 'ú') THEN
> > WRETORNO := WRETORNO || '&uacute;';
> > ELSIF(WCARACTER= 'à') THEN
> > WRETORNO := WRETORNO || '&agrave;';
> > ELSIF(WCARACTER= 'â') THEN
> > WRETORNO := WRETORNO || '&acirc;';
> > ELSIF(WCARACTER= 'Ã') THEN
> > WRETORNO := WRETORNO || '&Atilde;';
> > ELSIF(WCARACTER= 'Ç') THEN
> > WRETORNO := WRETORNO || '&Ccedil;';
> > ELSIF(WCARACTER= 'Õ') THEN
> > WRETORNO := WRETORNO || '&Otilde;';
> > ELSIF(WCARACTER= 'É') THEN
> > WRETORNO := WRETORNO || '&Eacute;';
> > ELSIF(WCARACTER= 'Ê') THEN
> > WRETORNO := WRETORNO || '&Ecirc;';
> > ELSIF(WCARACTER= 'Í') THEN
> > WRETORNO := WRETORNO || '&Iacute;';
> > ELSIF(WCARACTER= 'À') THEN
> > WRETORNO := WRETORNO || '&Agrave;';
> > ELSIF(WCARACTER= 'Â') THEN
> > WRETORNO := WRETORNO || '&Acirc;';
> > ELSIF(WCARACTER= 'Ó') THEN
> > WRETORNO := WRETORNO || '&Oacute;';
> > ELSIF(WCARACTER= 'Ô') THEN
> > WRETORNO := WRETORNO || '&Ocirc;';
> > ELSIF(WCARACTER= 'Ú') THEN
> > WRETORNO := WRETORNO || '&Uacute;';
> > ELSIF(WCARACTER= '°') THEN
> > WRETORNO := WRETORNO || '&ordf;';
> > ELSIF(WCARACTER= 'ª') THEN
> > WRETORNO := WRETORNO || '&ordm;';
> > ELSIF(WCARACTER= '?') THEN
> > WRETORNO := WRETORNO || '&para;';
> > ELSE
> > WRETORNO := WRETORNO || WCARACTER;
> > END IF;
> > END LOOP;
> > RETURN (WRETORNO);
> > ELSE
> > RETURN (WTEXTO);
> > END IF;
> > END TROCAACENTOPORCODIG OHTML;
> > --ENVIA O HEADER MYME
> > PROCEDURE SEND_HEADER(
> > NAME IN VARCHAR2,
> > HEADER IN VARCHAR2) AS
> > BEGIN
> > UTL_SMTP.WRITE_ DATA(l_connectio n, NAME || ': ' || HEADER ||
> UTL_TCP.CRLF) ;
> > END;
> >
> > Abs.
> >
> > Sérgio Chaves.
> >
> > ____________ _________ _________ __
> >
> > De: oracle...@yahoogrup os.com.br em nome de michelycarneiro
> > Enviada: ter 15/9/2009 10:01
> > Para: oracle...@yahoogrup os.com.br
> > Assunto: [oracle_br] Informação e-mail com anexo PL/SQL - ORACLE
> >
> > Boa dia a todos!
> >
> > Será que alguém pode me ajudar com um probleminha?
> >
> > É que tenho que gerar uma procedure que irá enviar um e-mail com anexo.
> >
> > O anexo eu terei que localizar em uma pasta do meu computador.
> >
> > Alguém tem idéia de como fazer isso?
> >
> > Eu consigo enviar um e-mail via banco, mas não consigo anexar um arquivo
> do meu computador.
> >
> > Obrigada,
> >
> > Michely Carneiro
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > ____________ _________ _________ _________ _________ _________ _
> > Veja quais são os assuntos do momento no Yahoo! +Buscados
> > http://br.maisbusca dos.yahoo. com <http://br.maisbusca dos.yahoo. com>
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
> __________________________________________________________
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Júlio César Corrêa
IS Technologist - Oracle DBA
www.dbajccorrea.com

“To stay competitive in the tech industry, never stop
learning. Always be on the lookout for better ways of
doing things and new technologies. Our industry does
not reward people who let themselves stagnate”
–John Hall, Senior Vice President, Oracle University


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a