Buenas Tardes,
Estimados colegas, sé que el tema se ha tratado, pero no encuentro el correo.
Lo que requiero es enviar correo por gmail con archivo adjunto.
Alguien tiene alguna rutina para vpro5.
Gracias de antemano,
Saludos
--
Has recibido este mensaje porque estás suscrito al grupo "MundoBBx" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundobbx+u...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Gracias por la pronta respuesta. Lo voy a probar.
Muchas gracias....
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a mundobbx+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Estimado
Puede mandar las primeras líneas del config que esta usando, creo que se puede haber quedado cortos con la cantidad de alias
|
El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
|
0010 rem 0010"^EMAIL.SMTP""BBx7.3""Send E-Mail via SMTP""CEMS, 01/28/20030020 rem " 0030 rem "by (por): Carlos E. Mendoza S., 01/28/20030040 rem "Copyright (c) 2003-&up INGENIX Consulting-VE. All rights reserved.0050 rem "0060 rem "INGENIX 21 grants you a royalty free license to use or modify this0070 rem "software provided that this copyright notice appears on all copies.0080 rem "This software is provided "AS IS," without a warranty of any kind.0090 rem "0100 rem "INGENIX 21 le otorga una licencia gratuita para usar y/o modificar0110 rem "este software siempre que mantenga este COPYRIGHT en todas las copia0110:s.0120 rem "Este software es entregado "COMO ESTA", sin ningun tipo de garantia.0130 rem 0140 seterr 01600150 enter FROM$,TO$,CC$,BCC$,SUBJECT$,MESSG$,ATTACH$,HOST$,PORT,USR$,PWD$,ERR0150:$0160 let SMTP_HOST$=HOST$,SMTP_PORT=PORT0170 seterr 9330; rem setesc 93400180 gosub 90000200 rem ^1000210 rem "Fully Qualified Domain Name0220 let FQDN$="[ localhost ]"0230 rem 0240 rem "Hay Servidores que requieren un FQDN valido0250 rem "de ser el caso, tildee la casilla FQDN en la plantilla de correo0260 if pos("FQDN"=SMTP_FLAG$)=0 then goto 07000270 let TMP=pos("FQDN_URL="=cvs(SMTP_FLAG$,4))+90280 if TMP>9 then let FQDN_URL$=ath(SMTP_FLAG$(TMP,pos(" "=SMTP_FLAG$(TMP)+" 0280:")-1))0290 if FQDN_URL$="" then let FQDN_URL$="http://ipecho.net/plain"0300 let TMP=pos(";"=FQDN_URL$+";"),URL$=FQDN_URL$(1,TMP-1)0310 let FQDN_URL$=FQDN_URL$(min(len(FQDN_URL$)+1,TMP+1))0320 rem 0330 rem "Establece conexion con el servidor HOST$ via HTTP (PORT=80)0340 let HOST$=""; call "^PROTO.TCP",HOST$,PORT,URL$0350 let FLAG$="PROTOCOL=http "+HTTP_FLAG$,CONFIG$=HTTP_CONFIG$0400 rem ^1000410 rem "General Request Method (GET or POST)0420 let SEND$=URL$+CR$0430 let SEND$=SEND$+"Connection: close"+CR$0440 let REPLY$=""; gosub REQUEST0450 if VERBOSE>1 then let TMP$="* "+RCVD$; gosub 53200460 let TMP=pos(CR$+"HTTP/1."=SEND$)+len(CR$)0470 if num(SEND$(TMP+9,3),err=0600)<>200 then goto 06000480 rem 0490 let TMP=pos(";"=FQDN_URL$+";"),TMP$=FQDN_URL$(1,TMP-1)0500 let FQDN_URL$=FQDN_URL$(min(len(FQDN_URL$)+1,TMP+1))0510 let TMP=1; if TMP$>"" then let TMP=pos(TMP$=RCVD$); if TMP=0 then goto 040510:900520 let TMP$=RCVD$(TMP+len(TMP$),pos(" ">RCVD$(TMP+len(TMP$))+" ")-1)0530 if TMP$>"" then goto 05600540 if FQDN_URL$="" then goto 06000550 goto 04900560 let TMP=num(TMP$(1,3),err=0580)0570 if TMP and pos("."=TMP$(4))=1 then let TMP$="[ "+TMP$+" ]"0580 let FQDN$=TMP$0600 rem ^1000610 if VERBOSE>0 then let TMP$="* FQDN="+FQDN$; gosub 53000700 rem ^1000710 rem "Verifica si la Autenticacion es XOAUTH2 para obtener el token0720 let TMP$="XOAUTH_TOKEN="; gosub 9170; if TMP=0 then goto 11000730 let XOAUTH_TOKEN$=ath(VALUE$)0740 let CLIENT_ID$="449055871565-33ohlrn627cphetugqtqj2mgj5f6mulr.apps.google0740:usercontent.com"0750 let CLIENT_SECRET$="dd_7FybVl85YSwFyxTY5quj4"0760 let REDIRECT_URI$="http://host.ingenix21.com.ve/cgi-bin/sinfonix.pl?xoaut0760:h"0770 rem 0780 rem "Establece conexion con el servidor HOST$ via HTTPS (PORT=443)0790 let URL$="https://www.googleapis.com/oauth2/v3/token"0800 let HOST$=""; call "^PROTO.TCP",HOST$,PORT,URL$0810 let FLAG$="PROTOCOL=http "+HTTP_FLAG$,CONFIG$=HTTP_CONFIG$0900 rem ^1000910 rem "General Request Method (GET or POST)0920 let SEND$=URL$+CR$0930 let SEND$=SEND$+"Content-Type: application/x-www-form-urlencoded"+CR$0940 let SEND$=SEND$+"Connection: close"+CR$0950 let SEND$=SEND$+""+CR$0960 let SEND$=SEND$+"code="+XOAUTH_TOKEN$+"&"0970 let SEND$=SEND$+"client_id="+CLIENT_ID$+"&"0980 let SEND$=SEND$+"client_secret="+CLIENT_SECRET$+"&"0990 let SEND$=SEND$+"redirect_uri="+REDIRECT_URI$+"&"1000 let SEND$=SEND$+"grant_type=authorization_code&"1010 let REPLY$=""; gosub REQUEST1020 rem 1030 let TMP=pos($22$+"access_token"+$22$=RCVD$)1040 if TMP=0 then goto 11101050 let TMP$=RCVD$(TMP+14),TMP=pos($22$=TMP$)1060 if TMP=0 then goto 11101070 let ACCESS_TOKEN$=TMP$(TMP+1,pos($22$=TMP$(TMP+1)+$22$)-1)1080 if VERBOSE>0 then let TMP$="* ACCESS_TOKEN="+ACCESS_TOKEN$; gosub 53001100 rem ^1001110 rem "Establece conexion con el servidor HOST$ via SMTP (PORT=25) 1120 let HOST$=SMTP_HOST$,PORT=SMTP_PORT1130 let FLAG$="PROTOCOL=smtp "+SMTP_FLAG$,CONFIG$=SMTP_CONFIG$1200 rem ^1001210 let SEND$="EHLO "+FQDN$,REPLY$="250"; gosub REQUEST1220 rem 1230 if pos("STARTTLS"=RCVD$)=0 or SSL<>2 or SCHEME=0 then goto 12701240 let SEND$="STARTTLS",REPLY$="220"; gosub REQUEST1250 let SEND$="EHLO "+FQDN$,REPLY$="250"; gosub REQUEST1260 rem 1270 if pos("XOAUTH2"=RCVD$)=0 or pos("XOAUTH2"=FLAG$)=0 then goto 13201280 let SASL$="user="+USR$+$01$+"auth=Bearer "+ACCESS_TOKEN$+$0101$1290 call "^BASE64",0,SASL$1300 let SEND$="AUTH XOAUTH2 "+SASL$,REPLY$="235"; gosub REQUEST1310 goto 15101320 if pos("PLAIN"=RCVD$)=0 or pos("PLAIN"=FLAG$)=0 then goto 13601330 let SECRET$=$00$+USR$+$00$+PWD$; call "^BASE64",0,SECRET$1340 let SEND$="AUTH PLAIN "+SECRET$,REPLY$="235"; gosub REQUEST1350 goto 15101360 if pos("LOGIN"=RCVD$)=0 or pos("LOGIN"=FLAG$)=0 then goto 15101400 rem ^1001410 let SEND$="AUTH LOGIN",REPLY$="334",PRINT$="ON"; gosub REQUEST1420 let SEND$=USR$,REPLY$="334"; call "^BASE64",0,SEND$; gosub REQUEST1430 let SEND$=PWD$,REPLY$="235"; call "^BASE64",0,SEND$; gosub REQUEST1500 rem ^1001510 let SEND$="MAIL From: <"+FROM$+">",REPLY$="250"; gosub REQUEST1600 rem ^1001610 let RCPT$=TO$+";"+CC$+";"+BCC$1700 rem ^1001710 gosub SPLIT_RCPT1720 if MAIL$>"" then let SEND$="RCPT To: <"+MAIL$+">"; gosub REQUEST1730 if RCPT$>"" then goto 17101740 let SEND$="DATA",REPLY$="354"; gosub REQUEST2000 rem 20002010 rem "Header Message2020 let BOUNDARY$="----=_NextPart_00_"+hta(day+str(tim)),REPLY$="",PRINT$="ON2020:"2030 rem 2040 let SEND$="To: "+TO$; gosub REQUEST2050 let SEND$="Cc: "+CC$; gosub REQUEST2060 let SEND$="Subject: "+SUBJECT$; gosub REQUEST2100 rem ^1002110 let SEND$="From: "+FROM$; gosub REQUEST2120 let SEND$="User-Agent: Sinfonix 2000 E-Mail"; gosub REQUEST2130 let SEND$="X-Mailer: Sinfonix 2000 - INGENIX Consulting VE"; gosub REQUES2130:T2140 let SEND$="MIME-Version: 1.0"; gosub REQUEST2150 let SEND$="Content-Disposition: inline;"; gosub REQUEST2160 let SEND$="Content-Type: multipart/mixed;"; gosub REQUEST2170 let SEND$=$09$+"boundary="""+BOUNDARY$+""""; gosub REQUEST2180 let SEND$=""; gosub REQUEST2200 rem ^1002210 let SEND$="Mensaje de Multiples partes (MIME Format)"; gosub REQUEST2220 let SEND$=""; gosub REQUEST2230 let SEND$="--"+BOUNDARY$; gosub REQUEST2300 rem ^1002310 rem "(Text/Plain) Message2320 if TXT_MESSG$="" then goto 25002330 let SEND$="Content-Type: text/plain;"; gosub REQUEST2340 let SEND$=$09$+"charset=us-ascii"; gosub REQUEST2350 let SEND$="Content-Transfer-Encoding: quoted-printable"; gosub REQUEST2360 let SEND$=""; gosub REQUEST2370 let SEND$=TXT_MESSG$; gosub REQUEST2380 let SEND$="--"+BOUNDARY$2390 if HTM_MESSG$="" and ATTACH$="" then let SEND$=SEND$+"--"2400 gosub REQUEST2500 rem ^1002510 rem "(Text/Html) Message2520 if HTM_MESSG$="" then goto 27002530 let SEND$="Content-Type: text/html;"; gosub REQUEST2540 let SEND$=$09$+"charset=us-ascii"; gosub REQUEST2550 let SEND$="Content-Transfer-Encoding: quoted-printable"; gosub REQUEST2560 let SEND$=""; gosub REQUEST2570 let SEND$=MESSG$; gosub REQUEST2580 let SEND$="--"+BOUNDARY$2590 if ATTACH$="" then let SEND$=SEND$+"--"2600 gosub REQUEST2700 rem ^1002710 rem "Attachments on MIME format: application/octet-stream;"2720 if ATTACH$="" then goto 30102730 let TEMP=pos($0D0A$=ATTACH$)2740 if TEMP=0 then let ATTACH$=ATTACH$+$0D0A$; goto 27302750 let FILE$=ATTACH$(1,TEMP-1),ATTACH$=ATTACH$(TEMP+2)2760 let CHANNEL=unt; open (CHANNEL,isz=-1,err=2720)FILE$2770 let FILE_NAME$=FILE$(1+pos("/"=FILE$,-1))2800 rem ^1002810 let SEND$="Content-Type: application/octet-stream;"; gosub REQUEST2820 let SEND$=$09$+"name="""+FILE_NAME$+""""; gosub REQUEST2830 let SEND$="Content-Transfer-Encoding: base64"; gosub REQUEST2840 let SEND$="Content-Disposition: attachment;"; gosub REQUEST2850 let SEND$=$09$+"filename="""+FILE_NAME$+""""; gosub REQUEST2860 let SEND$=""; gosub REQUEST2870 rem 2880 read record(CHANNEL,siz=54,end=2910)SEND$2890 call "^BASE64",0,SEND$; gosub REQUEST2900 goto 28802910 let SEND$="--"+BOUNDARY$; if ATTACH$="" then let SEND$=SEND$+"--"2920 gosub REQUEST2930 close (CHANNEL)2940 goto 27203000 rem ^1003010 rem "End of Message...3020 let SEND$=".",REPLY$="250"; gosub REQUEST3030 let SEND$="QUIT",REPLY$="221"; gosub REQUEST3040 goto 99103050 rem 5000 rem 5000"Sub-Routine 5100 rem ^1005110 rem "Split the Recipient5120 SPLIT_RCPT: 5130 let POS=min(pos(" "=RCPT$+" "),pos(","=RCPT$+","),pos(";"=RCPT$+";"))5140 let MAIL$=RCPT$(1,POS-1),RCPT$=cvs(RCPT$(min(POS,len(RCPT$))+1),3)5150 return 5160 rem 5200 rem ^100"Submit Request to SMTP Server5210 REQUEST: 5220 let TMP_FLAG$=FLAG$5230 let TMP_FLAG$=TMP_FLAG$+"CRLF="+hta(CR$)+" "5240 let TMP_FLAG$=TMP_FLAG$+"REPLY="+REPLY$+" "5250 let TMP_FLAG$=TMP_FLAG$+"PRINT="+PRINT$+" "5260 call "^PROTO.TCP",HOST$,PORT,SEND$,RCVD$,CONFIG$,TMP_FLAG$5270 let ERR$=TMP_FLAG$; if ERR$>"" then goto 99105280 return 5300 rem ^100"TRACE Process5310 let TMP$=TMP$+CR$5320 rem 5330 let TMP=pos(" "=TMP$),PF$=""5340 if TMP then let PF$=TMP$(1,TMP),TMP$=TMP$(TMP+1)5350 if fid(0)<>"IO" then goto 53705360 let Z$="<",X$="<"; gosub 54105370 let TMP=pos(CR$=TMP$)5380 if TMP then print PF$+TMP$(1,TMP-1); let TMP$=TMP$(TMP+len(CR$)); goto 535380:705390 if TMP$>"" then print PF$+TMP$,5400 return 5410 let TMP=pos(Z$=TMP$); if TMP=0 then return 5420 let TMP$=TMP$(1,TMP-1)+X$+TMP$(TMP+len(Z$))5430 goto 54109000 rem 9000,5"DEFINITION SECTION9005 call "^DFILS",0,STDIO$9010 let SMTP_FLAG$=ERR$,ERR$="",CR$=$0A$9015 if SMTP_FLAG$="" then let SMTP_FLAG$="VERBOSE LEVEL=3 FQDN "9020 if pos("VERBOSE "=SMTP_FLAG$)=0 then goto 90359025 let TMP$="LEVEL="; gosub 9170; let VERBOSE=VALUE9030 let HTTP_FLAG$=HTTP_FLAG$+"VERBOSE LEVEL="+str(VERBOSE)+" "9035 if pos("SSL "=SMTP_FLAG$) then let SSL=19040 if pos("STARTTLS "=SMTP_FLAG$) then let SSL=29045 if pos("OPENSSL "=SMTP_FLAG$) then let SCHEME=19050 if pos("GNUTLS "=SMTP_FLAG$) then let SCHEME=29055 rem 9060 let TXT_MESSG$=MESSG$(1,pos($00$=MESSG$+$00$)-1)9065 let HTM_MESSG$=MESSG$(min(len(MESSG$)+1,pos($00$=MESSG$+$00$)+1))9070 rem 9075 if VERBOSE=0 and pgm(-1)<>pgm(-2) then goto 90859080 if fid(0)<>"IO" then print 'CS',; let VERBOSE=29085 goto 91359090 rem 9100 if USR$="" then let USR$="x@y",PWD$="*******"
9105 if TO$="" then let TO$="x@y"9110 if CC$="" then let CC$="x@y"9115 if BCC$="" then let BCC$="x@y"9120 if SUBJECT$="" then let SUBJECT$="prueba de email via SMTP"9125 if MESSG$="" then let MESSG$=SUBJECT$9130 if ATTACH$="" then let ATTACH$="/sinfonix/logoingenix.gif"9135 rem 9140 if FROM$="" then let FROM$=USR$9145 if SMTP_HOST$="" then let SMTP_HOST$="localhost",SMTP_PORT=809150 if SMTP_HOST$="" and pos("@"=USR$) then let SMTP_HOST$="smtp."+USR$(pos("9150:@"=USR$)+1),SMTP_PORT=259155 if SMTP_HOST$="" and USR$>"" then let SMTP_HOST$="localhost",SMTP_PORT=259160 if FROM$="" and SMTP_HOST$="" then let ERR$=ERR$+"host no found"+$0D0A$; 9160:goto 99109165 return 9170 let TMP=pos(TMP$=cvs(SMTP_FLAG$,4)); if TMP=0 then return 9175 let TMP$=SMTP_FLAG$(TMP,pos(" "=SMTP_FLAG$(TMP)+" ")-1)9180 if pos("="=TMP$)=0 then let TMP$=""; return 9185 let VALUE$=TMP$(pos("="=TMP$)+1)9190 let VALUE=0,VALUE=num(VALUE$,err=9195)9195 return 9300 rem 9300"ROUTINE PROGRAM9310 rem 9320 rem "ERROR I/O FILE9330 call "^IOERR",err,tcb(5),"^EMAIL.SMTP"; retry9340 return ; rem "Press ESC... retry9700 rem 9700"READ TABLE9710 let Z$=cvs(Z$,2); find record(FILES+1,key=Z$,dom=9720)Z$; return 9720 dim Z$(100); return 9730 def fnSEEK$(SEEKKEY$,FILE_ID$)=fnBIT$(SEEKKEY$+$00$,FILE_ID$,$00FF$,max(p9730:os($00$<>SEEKKEY$,-1),1))9740 def fnBIT$(SEEKKEY$,FILE_ID$,MOST$,LENGTH)=SEEKKEY$(1,LENGTH-1)+chr(max(a9740:sc(SEEKKEY$(LENGTH)),1)-1)+fill(max(asc(FILE_ID$(2))-LENGTH,0),MOST$(1+mi9740:n(1,asc(SEEKKEY$(LENGTH))),1))9800 rem 9800"EDIT ERROR9810 print (0,err=9810)'RB',; return 9900 rem 9900"END OF PROGRAM9910 close (OUT,err=9920)9920 close (IN,err=9930)9930 rem 9940 if VERBOSE=0 then goto 99709950 if ERR$>"" then let TMP$="* !ERROR="+ERR$; gosub 53009960 if fid(0)="IO" then release 9970 seterr 9980; exit 9980 stop0010 rem 0010"^PROTO.TCP""BBx7.3""Internet Protocol Handler""CEMS, 01/10/20060020 rem " 0030 rem "by (por): Carlos E. Mendoza S., 01/10/20060040 rem "Copyright (c) 2003-&up INGENIX Consulting-VE. All rights reserved.0050 rem "0060 rem "INGENIX 21 grants you a royalty free license to use or modify this0070 rem "software provided that this copyright notice appears on all copies.0080 rem "This software is provided "AS IS," without a warranty of any kind.0090 rem "0100 rem "INGENIX 21 le otorga una licencia gratuita para usar y/o modificar0110 rem "este software siempre que mantenga este COPYRIGHT en todas las copia0110:s.0120 rem "Este software es entregado "COMO ESTA", sin ningun tipo de garantia.0130 rem 0140 seterr 0150; enter HOST$,PORT,REQUEST$,RESPONSE$,CONFIG$,FLAG$0150 seterr 9330; rem setesc 93400200 rem ^1000210 rem "Prepare the connection environment0220 gosub 9000; gosub 80000300 rem ^1000310 rem "Connects to server HOST$:PORT0320 gosub OPEN_PORT0400 rem ^1000410 rem "Starts Transmission According the Protocol0420 on PROTOCOL-1 goto HTTP,SMTP,POP3,IMAP,FTP,XMPP0430 rem 0500 rem ^100"HTTP Protocol Handler0510 HTTP: 0520 let SEND$="",TMP=pos(CR$=REQUEST$)0530 if TMP=0 then let REQUEST$=REQUEST$+CR$; goto 05200540 let URL$=cvs(REQUEST$(1,TMP-1),3),REQUEST$=REQUEST$(TMP)0550 if URL$="" then let URL$="/"0560 rem 0570 let METHOD$="GET",TMP=pos(CR$+CR$=REQUEST$); if TMP=0 then goto 05900580 let METHOD$="POST",CONTENT_LENGTH=len(REQUEST$(TMP+len(CR$)*2))0590 rem 0600 let TMP=pos(URL$(1,pos(" "=URL$+" ")-1)=CMD_HTTP$)0610 if TMP=0 then let URL$=METHOD$+" "+URL$0620 rem 0630 let TMP=pos("HTTP/1."=URL$(pos(" "=" "+URL$,-1)))0640 if TMP<>1 then let URL$=URL$+" HTTP/1.1"0650 rem 0660 let SEND$=SEND$+URL$+CR$0700 rem ^1000710 rem "Http DEFAULT Header0720 let TMP$=CR$+"User-Agent: Sinfonix2000/1.0"; gosub 86000730 let TMP$=CR$+"Host: "+HOST$; gosub 8660; gosub 86000740 let TMP$=CR$+"Accept: */*"; gosub 86000750 if CONTENT_LENGTH=0 then goto 07700760 let TMP$=CR$+"Content-Length: "+str(CONTENT_LENGTH); gosub 86000770 rem 0800 rem ^1000810 rem "Http EXTENDED Header0820 if pos("HTTP-HEADER=DEFAULT"=cvs(FLAG$,7)) then goto 08400830 let TMP$=CR$+"Accept-Encoding: chunked"; gosub 86000840 rem 0850 let SEND$=SEND$+REQUEST$(len(CR$)+1)0860 rem 0870 gosub REQUEST; let REQUEST$=SEND$; rem "Summit Request0880 rem 0900 rem ^100"Init Response0910 let RESPONSE$=""0920 rem 0930 rem "Response STATUS Line0940 gosub RESPONSE; if pos("HTTP/1."=DATA$)=1 then goto 11100950 rem 0960 rem "ERROR Request...0970 let RESPONSE$=RESPONSE$+"HTTP/1.1 400 Bad Request (Sinfonix2000)"+CR$0980 let RESPONSE$=RESPONSE$+"Connection: close"+CR$0990 let RESPONSE$=RESPONSE$+CR$1000 goto 16201100 rem ^1001110 rem "Response HEADER Lines1120 let RESPONSE$=RESPONSE$+DATA$; gosub RESPONSE1130 if DATA$<>$0D0A$ then goto 1110; rem "Next HEADER Line1200 rem ^1001210 rem "Content-Length:1220 let TMP=pos("Content-Length: "=RESPONSE$)+16; if TMP=16 then goto 13101230 let LENGTH=num(RESPONSE$(TMP,pos(" ">RESPONSE$(TMP)+" ")-1),err=1610)1240 let EOF$="",CHUNK$=""1250 goto 17001300 rem ^1001310 rem "Transfer-Encoding:1320 let TMP=pos("Transfer-Encoding: "=RESPONSE$)+19; if TMP=19 then goto 14101330 let LENGTH=01340 let EOF$="",CHUNK$=""1350 goto 17001400 rem ^1001410 rem "Content-Type:1420 let TMP=pos("Content-Type: "=RESPONSE$)+14; if TMP=14 then goto 16001430 let TMP=pos(": application/json"=RESPONSE$)+18; if TMP=18 then goto 15001440 let LENGTH=-11450 let EOF$="read:errno=",CHUNK$=""1460 goto 17001500 rem ^1001600 rem ^1001610 rem "Error?1620 let LENGTH=-11630 let EOF$="",CHUNK$=""1640 goto 17001700 rem ^1001710 let HEADER_LENGTH=len(RESPONSE$)1800 rem ^1001810 rem "Response BODY Lines1820 let RESPONSE$=RESPONSE$+DATA$1830 if VERBOSE>1 then gosub 67201840 gosub RESPONSE; if EOF$>"" and pos(EOF$=DATA$)=1 then goto 18801850 if LENGTH=-1 then goto 1820 else if LENGTH=0 then goto 19001860 let RLEN=RLEN+len(DATA$); if RLEN<LENGTH then goto 18201870 let RESPONSE$=RESPONSE$+DATA$1880 if VERBOSE>1 then gosub 67101890 goto 21001900 if CHUNK$="" then goto 19301910 let RLEN=RLEN+len(DATA$); if RLEN>=CHUNK then let CHUNK$=""1920 goto 18201930 let CHUNK$=DATA$(1,min(pos($0D0A$=DATA$),pos(";"=DATA$+";"))-1)1940 if mod(len(CHUNK$),2) then let CHUNK$="0"+CHUNK$1950 let CHUNK$=ath(CHUNK$),RLEN=0,CHUNK=dec($00$+CHUNK$)+11960 if CHUNK>1 then goto 18301970 if VERBOSE>1 then gosub 67101980 rem 1990 rem "Response FOOTER Lines2000 gosub RESPONSE; if DATA$=$0D0A$ then goto 21002010 let RESPONSE$=RESPONSE$(1,HEADER_LENGTH)+DATA$+RESPONSE$(HEADER_LENGTH+1)2020 let HEADER_LENGTH=HEADER_LENGTH+len(DATA$)2030 goto 20002100 rem ^1002110 let TMP=int(pos(RESPONSE$(10,3)="???,100,302,303,307,",4)/4)2120 on TMP goto 2240,0900,21302130 let TMP$=CR$+"Location: "; gosub 86802140 if TMP$>"" then let URL$=TMP$(11); gosub 8770 else goto 22402150 let TMP_CONFIG$=CONFIG$2160 if TMP_HOST$=HOST$ and TMP_PORT=PORT then goto 22102170 let TMP_CONFIG$=""2180 let TMP$=CR$+"Connection: close"; gosub 86002190 let TMP$=CR$+"Host:"; gosub 86602200 rem 2210 let REQUEST$=URL$+CR$+"Original-METHOD: "+REQUEST$2220 call "^PROTO.TCP",TMP_HOST$,TMP_PORT,REQUEST$,RESPONSE$,TMP_CONFIG$,FLAG$2230 goto 21002240 rem 2250 let TMP=pos($0D0A0D0A$=RESPONSE$); if TMP=0 then goto 22802260 let REQUEST$=REQUEST$+$0D0A0D0A$+RESPONSE$(1,TMP+4-1)2270 let RESPONSE$=RESPONSE$(TMP+4)2280 goto 99102290 rem 2300 rem ^100"SMTP Protocol Handler2310 SMTP: let SEND$=REQUEST$; gosub REQUEST; if REPLY$="" then goto 99102320 rem 2330 let RESPONSE$="",REPLY=num(REPLY$,err=2340)2340 gosub RESPONSE; let RESPONSE$=RESPONSE$+DATA$2350 let TMP=num(DATA$(1,4),err=2340); if TMP<1 or TMP>599 then goto 23402360 if TMP<>REPLY then goto 70302370 if REQUEST$="STARTTLS" then gosub STARTTLS2380 goto 99102390 rem 2400 rem ^100"POP3 Protocol Handler2410 POP3: 2420 rem 2500 rem ^100"IMAP Protocol Handler2510 IMAP: 2520 rem 2600 rem ^100"FTP Protocol Handler2610 FTP: 2620 rem 2700 rem ^100"XMPP Protocol Handler2710 XMPP: 2800 rem ^1005000 rem 5000"Sub-Routine 5010 rem 5100 rem ^100"Connects to server 5110 OPEN_PORT: 5120 if CMD$+ARG$="" then goto 51505130 if pos(str(PROTOCOL)="1")=0 then return 5140 gosub 6600; if (PID) then return 5150 rem 5160 on SSL goto 5200,54005200 rem ^1005210 rem "TELNET used to establish an BASIC connection5220 let CMD$="telnet"5230 let ARG$=" "5240 let TELNET_CMD$="toggle crlf"+CR$+"open "+HOST$+" "+str(PORT)+CR$5300 rem ^1005310 rem "GNUTLS used to establish an BASIC connection5311 goto 56805320 let CMD$="gnutls-cli"5330 let ARG$=" "+HOST$+" --port "+str(PORT); rem +" --crlf"5340 let ARG$=ARG$+" --starttls"5350 rem CERT$="/sinfonix/tutorial/domain.crt"5360 rem ARG$=ARG$+" --x509cafile "+CERT$+" --no-ca-verification"5370 let TELNET_CMD$=""5380 goto 56805400 rem ^1005410 on SCHEME goto 5510,5510,56105500 rem ^1005510 rem "OPENSSL used to establish an ENCRYPTED connection5520 let CMD$="openssl"5530 let ARG$=" s_client -host "+HOST$+" -port "+str(PORT)5540 let ARG$=ARG$+" -crlf -ign_eof"; rem -quiet"5550 if SSL=2 then let ARG$=ARG$+" -starttls "+PROTO_NAME$(PROTOCOL*5-4,5)5560 let TELNET_CMD$=""5570 goto 56805600 rem ^1005610 rem "GNUTLS used to establish an ENCRYPTED connection5620 let CMD$="gnutls-cli"5630 let ARG$=" "+HOST$+" --port "+str(PORT)+" --crlf"5640 if SSL=2 then let ARG$=ARG$+" --starttls"5650 let CERT$="/sinfonix/tutorial/domain.crt"5660 let ARG$=ARG$+" --x509cafile "+CERT$+" --no-ca-verification"5670 let TELNET_CMD$=""5680 rem 5690 close (IN,err=5700)5700 close (OUT,err=5710)5710 rem 5720 call "^DFILS",0,STDIO$5730 let CMD_TMP$=CMD$+ARG$+" >"+STDIO$+" 2>&1"5740 let OUT=unt; open (OUT,err=5740)"|"+CMD_TMP$5750 let IN=unt; open (IN,err=5740)STDIO$5760 if VERBOSE>0 then let TMP$="# "+CMD_TMP$; gosub 68005770 rem 5780 if TELNET_CMD$="" then goto 58305790 let SEND$=TELNET_CMD$(1,pos(CR$=TELNET_CMD$)-1)5800 let TELNET_CMD$=TELNET_CMD$(pos(CR$=TELNET_CMD$)+len(CR$))5810 gosub REQUEST; goto 57805820 rem 5830 let RESPONSE$="",BAK_REPLY$=REPLY$,REPLY$="persistent"5840 gosub RESPONSE; if RESPONSE$+DATA$="" then goto 58405850 let RESPONSE$=RESPONSE$+DATA$; if DATA$<>"" then goto 58405860 let REPLY$=BAK_REPLY$5870 return 5880 rem 5900 rem ^100"Submit Request to Server5910 REQUEST: 5920 if SEND$="" and pos("PRINT=ON"=FLAG$)=0 then goto 59405930 let SEND$=SEND$+CR$; write record(OUT,err=5940)SEND$5940 if VERBOSE>2 then let TMP$="* "+FLAG$; gosub 68005950 if VERBOSE>0 then let TMP$="> "+SEND$; gosub 68205960 goto 61005970 rem 6000 rem ^100"Waiting for Server Response6010 RESPONSE: let DATA$="",TIMEOUT=06020 LOOP: read record(IN,tim=10,siz=1,err=TIMEOUT)TMP$6030 let DATA$=DATA$+TMP$; if TMP$<>$0A$ then goto LOOP6040 if VERBOSE>0 then let TMP$="< "+DATA$; gosub 68206050 goto 61006060 TIMEOUT: if TIMEOUT<200000 then let TIMEOUT=TIMEOUT+1; goto LOOP6070 gosub 6600; if PID=0 then goto 70206080 if RESPONSE$+DATA$="" and REPLY$<>"persistent" then goto 70206090 return 6100 rem ^1006110 if fid(0)="IO" or ASK$<>"" then return 6120 print (FID0)@(0),"Hit <ENTER> to pause (ANYKEY to Continue) ",6130 read record(FID0,siz=1)ASK$6140 print (FID0)@(0),'CL',6150 if cvs(ASK$,4)="Q" and pgm(-1)=pgm(-2) then escape6160 if ASK$=$0D$ then let ASK$=""6170 return 6180 rem 6200 rem ^100"START Data Encryption6210 STARTTLS: 6220 gosub 6600; if PID=0 then goto 70206230 let KILL_CMD$="kill -ALRM "+str(PID)6240 if VERBOSE>1 then let TMP$="* "+KILL_CMD$; gosub 68006250 let TMP=scall(KILL_CMD$)6260 return 6270 rem 6300 rem ^100"End Transmission...6310 ETX: 6320 if pos("Connection: close"+CR$=REQUEST$)=0 then goto 63606330 close (OUT,err=6340)6340 close (IN,err=6350)6350 let OUT=0,IN=06360 rem 6370 let CONFIG$=""6380 let CONFIG$=CONFIG$+bin(len(HOST$),2)+HOST$6390 let CONFIG$=CONFIG$+bin(PORT,3)6400 let CONFIG$=CONFIG$+bin(VERBOSE,3)6410 let CONFIG$=CONFIG$+bin(SSL,3)6420 let CONFIG$=CONFIG$+bin(SCHEME,3)6430 let CONFIG$=CONFIG$+bin(OUT,3)6440 let CONFIG$=CONFIG$+bin(IN,3)6450 let CONFIG$=CONFIG$+bin(len(STDIO$),2)+STDIO$6460 let CONFIG$=CONFIG$+bin(PROTOCOL,3)6470 let CONFIG$=CONFIG$+bin(len(REPLY$),2)+REPLY$6480 let CONFIG$=CONFIG$+bin(len(CR$),2)+CR$6490 let CONFIG$=CONFIG$+bin(len(CMD$),2)+CMD$6500 let CONFIG$=CONFIG$+bin(len(ARG$),2)+ARG$6510 let CONFIG$=CONFIG$+bin(FID0,3)6520 let FLAG$=ERR$6530 return 6540 rem 6600 rem ^100"Process ID (PID)6610 let TMP$="""_ "+cvs(CMD$+ARG$,2)+""""6620 let Z$=""; call "^DFILS",0,Z$6630 let TMP=scall("ps -axf|grep "+TMP$+"|grep -v grep|awk '{print $1}'>"+Z$)6640 let PID=0,TMP=unt; open (TMP)Z$; read (TMP,err=6650)PID6650 close (TMP)6660 if VERBOSE>1 then let TMP$="* pid("+str(PID)+") "+TMP$; gosub 68006670 return 6700 rem ^100"TRACE HTML Process6710 gosub 6720; let TMP$=" "; gosub 6800; return 6720 let TMP$="* LENGTH="+str(LENGTH:"###,##0")+", RLEN="+str(RLEN:"###,##0")+6720:", CHUNK="+str(CHUNK:"###,###0BB"); gosub 68206730 return 6800 rem ^100"TRACE Process 6810 let TMP$=TMP$+CR$6820 rem 6830 let TMP=pos(" "=TMP$),PF$=""6840 if TMP then let PF$=TMP$(1,TMP),TMP$=TMP$(TMP+1)6850 if PF$="< " and pos($0D$=TMP$)=0 then let PF$="* "6860 if fid(0)<>"IO" then goto 68806870 let Z$="<",X$="<"; gosub 69306880 let TMP=pos($0D$=TMP$); if TMP then let TMP$=TMP$(1,TMP-1)+"^M"+TMP$(TMP+6880:1); goto 68806890 let TMP=pos(CR$=TMP$)6900 if TMP then print PF$+TMP$(1,TMP-1); let TMP$=TMP$(TMP+len(CR$)); goto 686900:806910 if TMP$>"" then print PF$+TMP$,6920 return 6930 let TMP=pos(Z$=TMP$); if TMP=0 then return 6940 let TMP$=TMP$(1,TMP-1)+X$+TMP$(TMP+len(Z$))6950 goto 69306960 rem 7000 rem ^100"ERROR Handler 7010 let ERR$=ERR$+"Name or service not known"+$0D0A$; goto 99107020 let ERR$=ERR$+"Connection reset by peer "+$0D0A$; goto 99107030 let ERR$=ERR$+RESPONSE$; goto 99107040 let ERR$=ERR$+"unknow error"+$0D0A$; goto 99107050 rem 8000 rem 8000"Prepare the connection environment8010 if CONFIG$="" then goto 81608020 gosub 8580; let HOST$=TMP$8030 let PORT=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8040 let VERBOSE=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8050 let SSL=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8060 let SCHEME=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8070 let OUT=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8080 let IN=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8090 gosub 8580; let STDIO$=TMP$8100 let PROTOCOL=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8110 gosub 8580; let REPLY$=TMP$8120 gosub 8580; let CR$=TMP$8130 gosub 8580; let CMD$=TMP$8140 gosub 8580; let ARG$=TMP$8150 let FID0=dec(CONFIG$(1,3)),CONFIG$=CONFIG$(4)8160 rem 8170 if pos("VERBOSE "=FLAG$)=0 then goto 81908180 let TMP$="LEVEL="; gosub 8520; let VERBOSE=VALUE8190 if pos("SSL "=FLAG$) then let SSL=18200 if pos("STARTTLS "=FLAG$) then let SSL=28210 if pos("OPENSSL "=FLAG$) then let SCHEME=18220 if pos("GNUTLS "=FLAG$) then let SCHEME=28230 let TMP$="PROTOCOL="; gosub 8520; if VALUE then let PROTOCOL=VALUE8240 let TMP=int(pos(cvs(VALUE$,4)=cvs(PROTO_NAME$,4))/5)+18250 if PROTOCOL=0 then let PROTOCOL=TMP8260 rem 8270 let TMP$=str(PORT:"####")8280 if PROTOCOL then goto 83308290 if pos(TMP$=" 80 443",4) then let PROTOCOL=1; goto 8330; rem "HTTP8300 if pos(TMP$=" 25 587 465",4) then let PROTOCOL=2; goto 8330; rem "SMTP8310 if pos(TMP$=" 110 993",4) then let PROTOCOL=3; goto 8330; rem "POP38320 rem 8330 if SSL then goto 83608340 if pos(TMP$=" 443 465 993",4) then let SSL=1; rem "SSL8350 if pos(TMP$=" 587",4) then let SSL=2; rem "STARTTLS8360 rem 8370 let TMP$="REPLY="; gosub 8520; if TMP then let REPLY$=VALUE$8380 let TMP$="CRLF="; gosub 8520; if TMP then let CR$=ath(VALUE$,err=8390)8390 rem 8400 if FID0 or (VERBOSE=0 and pgm(-1)<>pgm(-2)) then goto 84308410 let FID0=unt; open (FID0)fid(0)8420 if fid(0)="IO" then print "<pre>" else print 'CS',; let VERBOSE=28430 rem 8440 rem HOST$="smtp.live.com",PORT=258450 if HOST$>"" then goto 85108460 let URL$=REQUEST$; gosub 87708470 let REQUEST$=URL$8480 if TMP_HOST$="" then let ERR$=ERR$+"host no found"+$0D0A$8490 let HOST$=TMP_HOST$,PORT=TMP_PORT8500 goto 99108510 return 8520 let TMP=pos(TMP$=cvs(FLAG$,4)); if TMP=0 then return 8530 let TMP$=FLAG$(TMP,pos(" "=FLAG$(TMP)+" ")-1)8540 if pos("="=TMP$)=0 then let TMP$=""; return 8550 let VALUE$=TMP$(pos("="=TMP$)+1)8560 let VALUE=0,VALUE=num(VALUE$,err=8570)8570 return 8580 let TMP=dec(CONFIG$(1,2)),TMP$=CONFIG$(3,TMP),CONFIG$=CONFIG$(3+TMP)8590 return 8600 rem 8610 let TMP=pos(":"=TMP$); if TMP=0 then let TMP=pos(" "=TMP$+" ")8620 if pos(cvs(TMP$(1,TMP),4)=cvs(REQUEST$,4)) then goto 86508630 if pos(CR$=TMP$)=1 then let TMP$=TMP$(len(CR$)+1); goto 86308640 let SEND$=SEND$+TMP$+CR$8650 return 8660 rem 8670 let TEMP$=REQUEST$; gosub 8700; let REQUEST$=TEMP$; return 8680 rem 8690 let TEMP$=RESPONSE$; gosub 8700; let RESPONSE$=TEMP$; return 8700 rem 8710 let TMP=pos(":"=TMP$); if TMP=0 then let TMP=pos(" "=TMP$+" ")8720 let TMP=pos(cvs(TMP$(1,TMP),4)=cvs(TEMP$,4)); if TMP=0 then goto 87608730 if pos(CR$=TEMP$(TMP))=1 then let TMP=TMP+len(CR$); goto 87308740 let TMP$=TEMP$(TMP,pos(" ">TEMP$(TMP))-1)8750 let TEMP$=TEMP$(1,TMP-1)+TEMP$(TMP+pos(" ">TEMP$(TMP)))8760 return 8770 let PORT$="?"8780 if pos("//"=cvs(URL$,4))=1 then let PORT$="80",URL$=URL$(3)8790 if pos("HTTP://"=cvs(URL$,4))=1 then let PORT$="80",URL$=URL$(8)8800 if pos("HTTPS://"=cvs(URL$,4))=1 then let PORT$="443",URL$=URL$(9)8810 let TMP=pos("/"=URL$+"/")8820 let TMP$=URL$(1,TMP-1),URL$=URL$(TMP); if URL$="" then let URL$="/"8830 let TMP=pos(":"=TMP$)8840 if TMP then let PORT$=TMP$(TMP+1),TMP$=TMP$(1,TMP-1)8850 let TMP_HOST$=TMP$,TMP_PORT=80,TMP_PORT=num(PORT$,err=8860)8860 return 9000 rem 9000"DEFINITION SECTION9010 let CMD_HTTP$="1OPTIONS 2GET 3HEAD 4POST 5PUT 6DELETE 7TRACE 8CONNECT "9020 let PROTO_NAME$="http smtp pop3 imap ftp xmpp "9030 let CR$=$0A$9040 let ORG_FLAG$=FLAG$9050 return 9300 rem 9300"ROUTINE PROGRAM9310 rem 9320 rem "ERROR I/O FILE9330 call "^IOERR",err,tcb(5),"^PROTO.TCP"; retry9340 return ; rem "Press ESC... retry9700 rem 9700"READ TABLE9710 let Z$=cvs(Z$,2); find record(FILES+1,key=Z$,dom=9720)Z$; return 9720 dim Z$(100); return 9730 def fnSEEK$(SEEKKEY$,FILE_ID$)=fnBIT$(SEEKKEY$+$00$,FILE_ID$,$00FF$,max(p9730:os($00$<>SEEKKEY$,-1),1))9740 def fnBIT$(SEEKKEY$,FILE_ID$,MOST$,LENGTH)=SEEKKEY$(1,LENGTH-1)+chr(max(a9740:sc(SEEKKEY$(LENGTH)),1)-1)+fill(max(asc(FILE_ID$(2))-LENGTH,0),MOST$(1+mi9740:n(1,asc(SEEKKEY$(LENGTH))),1))9800 rem 9800"EDIT ERROR9810 print (0,err=9810)'RB',; return 9900 rem 9900"END OF PROGRAM9910 gosub ETX9920 seterr 9930; exit 9930 stopSaludos Edgar
colocar la clave "demo" cuando te sea solicitado.
Aquí tienes un ejemplo de la configuración que debes colocar en el programa para enviar correos con el servidor de Gmail, Cada vez que envíes un correo debes solicitar autorización pulsando el botón "Autorizar".
Te recomiendo que actives la casilla "Debugger", esta permite mostrar cada acción que el programa hace durante el proceso de conexión y envío del mensaje.