Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Clase - VCX si PRG  transmitere ema...
 transmitere email cu attachment
 
 11/26/2006 4:14:37 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






transmitere email cu attachment
 (N/A)
Am adaugat in Download, in categoria "Clase - vcx si prg" o clasa cu ajutorul careia se pot transmite emaluri cu attachement din VFP.
Am pus si cateva mici instructiuni in readme.txt din arhiva.

Alex Dobrin
Algis Info
 11/26/2006 4:24:51 AM
User is offlineedyshor
1450 posts
1st




Re: transmitere email cu attachment
 (Romania)
outlook ?!
 11/26/2006 4:51:35 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: transmitere email cu attachment
 (N/A)
Orice client de mail. Programul foloseste API. Trimite mailul in clientul de mail si de acolo trebuie sa-i da-i "Send" sau poti sa setezi clientul sa trimita automat.

Alex Dobrin
Algis Info
 11/26/2006 7:58:55 AM
User is offlineDoru Constantin
321 posts
3rd




Re: transmitere email cu attachment
 (Romania)
... sau ceva independent de clientul de email: aici
 8/23/2008 12:20:33 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
Scuze ca am reinviat o discutie veche, dar nu am vrut sa pornesc una noua cu acelasi subiect.

In atasament e o clasa care foloseste blat.dll (link-ul din mesajul anterior). Clasa e UNTESTED WORK IN PROGRESS, adica nu toate facilitatile pe care le-am vrut sunt implementate si a fost testata doar in fuga, cu un singur server de mail care nu cere autentificare, dar poate foloseste cuiva.

Poate fi folosita:
- in mod vizual
oMail = NEWOBJECT("mail")
oMail.Show()

- pentru a trimite mail-uri fara a fi nevoie de vreo actiune din partea utilizatorului
oMail = NEWOBJECT("mail")
oMail.txtFrom.Value = "sender@sndr.com"
oMail.txtTo.Value = "to@someone.net"
oMail.txtSubject.Value = "silent email"
oMail.edtBody.Value = "silently sent by the program"
oMail.BeSilentWhenSending = .T. && no message shown while sending
oMail.Send()
In acest caz problema e ca programul va "ingheta" cat timp se trimite mail-ul, deci utilizatorul ar trebui informat inainte, ca sa nu creada ca s-a blocat.

- sau o combinatie intre cele doua
oMail = NEWOBJECT("mail")
oMail.txtFrom.Value = "vfp_program@mycompany.com"
oMail.txtFrom.Enabled = .F.
oMail.txtTo.Value = "tech_support@developer.net"
oMail.txtTo.Enabled = .F.
oMail.txtSubject.Value = "bug report " + DTOC(DATE())
oMail.AddAttachement("\\full\path\to\log\file")
oMail.chkReturnReceipt = .T.
oMail.edtBody.Value = "Please describe what you were doing when the program crashed"
oMail.Show()

Proprietati:
Attachements[1,1] - C - matrice, contine fisierele care se ataseaza
BeSilentWhenSending - L - daca .T. nu va afisa un mesaj in timp ce trimite
BlatLog - L - daca e .T. Blat va scrie in BlatLogFile rezultatul
BlatLogFile - C - fisierul in care va scrie Blat daca BlatLog = .T.
ConfigFile - C - fisierul din care vor fi citite setarile pentru server, user, parola daca UseConfigFile != 0
HTMLFormat - L - daca e .T. mail-ul va fi transmis in format HTML
Priority - N - nivelul de prioritate al mail-ului. 0 = normal, 1 = high priority
SMTPServer - C - adresa serverului de SMTP
SMTPPort - N - portul pe care e deschis SMTP, de obicei 25
SMTPUsername - C - numele utilizatorului, in caz ca serverul cere autentificare
SMTPPassword - C - parola, in caz ca serverul cere autentificare
UseConfigFile - N - 0: Nu foloseste fisier de configurare
1: Foloseste Fisier de configurare, de tip .dbf

Proceduri:
AddAttachement(cFile) - primeste ca parametru calea catre un fisier pe care il va adauga la lista cu fisiere atasate.
Returneaza valoare numerica:
0 - fisierul a fost atasat
-1 - parametru invalid
1 - fisierul nu exista, nu a fost atasat

ChkB4Send() - verifica datele introduse in form inainte de a trimite procedura e apelata de catre Send(), nu e nevoie sa fie apelata manual
Returneaza valoare numerica, 0 = OK

ConfigRefresh() - reseteaza SMTPServer, SMTPPort, etc., in functie de UseConfigFile si valorile din ConfigFile

RemoveAttachement(xElement) - scoate un atasament din mail.Attachements[i]
Primeste parametru de tip N sau C:
N - sterge elementul cu numarul respectiv din matrice
C - sterge din matrice elementul care are exact valoarea primita ca parametru (fisierul respectiv)
Returneaza numeric, 0 = OK

Send() - trimite mail-ul
Apeleaza ChkB4Send() inainte de a trimite, daca ChkB4Send returneaza 0, continua. Daca nu, in cazul in care oMail.Visible = .T., afiseaza un mesaj de eroare, iar in cazul in care oMail.Visible = .F. returneaza codul returnat de ChkB4Send
Daca ChkB4Send() = 0, apeleaza SendViaBlat()
Returneaza 0 daca SendViaBlat() a returnat 0 (mail-ul a fost trimis), sau -1 daca SendViaBlat() returneaza altceva

SendViaBlat() nu e apelata in mod direct pentru ca in acest fel daca nu se poate sau nu se doreste folosirea blat.dll, se poate implementa o alta procedura care sa fie apelata din Send(), de ex. una care sa permita si afisarea unui progressbar in timp ce se trimite. In acest caz codurile de eroare probabil vor fi diferite de cele returnate de Blat. Send() poate fi modificat ca sa interpreteze noile coduri de eroare si sa returneze un cod cunoscut de aplicatie, fara a fi nevoie sa se modifice aplicatia.

Send() returneaza doar 0 si -1 deoarece codurile de eroare documentate de Blat par sa fie incorecte. La un test Blat mi-a returnat 11, cand ar fi trebuit sa returneze -1. 11 nu e documentat.

Repet, UNTESTED WORK IN PROGRESS.
SendMailWithBlat.zip 
 8/23/2008 7:01:36 PM
User is offlinegeorgian_craciun
77 posts


Re: transmitere email cu attachment
 (N/A)
Va iesi in final o treaba buna, sunt convins.
La firma la care am lucrat inainte, trimitem cu SendViaBLAT peste 600 mailuri de doua ori pe saptamana.
Totul il faceam programatic, inclusiv personalizarea body-ului in HTML.
Multa bafta
 8/24/2008 11:13:39 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania) Modified By wtfia  on 8/24/2008 11:18:22 PM)
 georgian_craciun wrote
La firma la care am lucrat inainte, trimitem cu SendViaBLAT peste 600 mailuri de doua ori pe saptamana.


Cum tratati erorile returnate de Blat?
"codurile de eroare documentate de Blat par sa fie incorecte. La un test Blat mi-a returnat 11, cand ar fi trebuit sa returneze 1. 11 nu e documentat."
Gresesc eu? Pentru ca as prefera sa transmit utilizatorului un mesaj mai clar decat "Mailul nu a fost trimis. Vezi logul, tu ala care nu stii engleza sau daca stii oricum nu te intereseaza si nici nu e treaba ta sa intelegi SMTP".

Sau poate stie cineva sa imi spuna de ce bucata asta de cod:

  lnResult = Send(ALLTRIM(lcBlatParam))
  
  IF lnResult != 0
   DO CASE
    CASE lnResult = -2
     THROW "The server actively denied our connection./The mail server doesn't like the sender name. "
    CASE lnResult = -1
     THROW "Unable to open SMTP socket" OR ;
       "SMTP get line did not return 220" OR ;
       "command unable to write to socket" OR ;
       "Server does not like To: address" OR ;
       "Mail server error accepting message data."
    CASE lnResult = 1
     THROW "File name (message text) not given" OR ;
       "Bad argument given"
    (...)
    OTHERWISE
     THROW "Unknown Error"
   ENDCASE
  ENDIF

a intrat pe ramura CASE lnResult = 1 cand lnResult era 11 (cred ca am gresit in mesajul anterior). Cazul testat era "Server does not like To: address", adica -1. Blat a returnat 11, iar DO CASE s-a oprit la 1. De ce?
 8/25/2008 8:39:45 AM
User is offlinegeorgian_craciun
77 posts


Re: transmitere email cu attachment
 (N/A) Modified By georgian_craciun  on 8/25/2008 6:27:56 PM)
 wtfia wrote
a intrat pe ramura CASE lnResult = 1 cand lnResult era 11 (cred ca am gresit in mesajul anterior). Cazul testat era "Server does not like To: address", adica -1. Blat a returnat 11, iar DO CASE s-a oprit la 1. De ce?


Pe noi nu ne interesau erorile pentru ca dupa trimiterea fiecarui mail se marca rezultatul intr-o tabela cu .T. sau .F.
Dupa ce se trimiteau toate, se relua ciclul cu cele care nu fusesera trimise si erau marcate cu .F..
Chiar a functionat bine, cu exceptia cazului cand nu aveam conexiune la Net.

Nu cred ca bucla CASE poate sa greseasca. Incearca
lnResult = Send(ALLTRIM(lcBlatParam))
? lnResult
ca sa vezi cum a fost interpretat lnResult in bucla.
.
incearca si aici :
http://tech.groups.yahoo.com/group/blat/files/Other/
 8/25/2008 7:21:48 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
 georgian_craciun wrote
Nu cred ca bucla CASE poate sa greseasca. Incearca
lnResult = Send(ALLTRIM(lcBlatParam))
? lnResult
ca sa vezi cum a fost interpretat lnResult in bucla.


Nici eu nu am crezut, codul asa cum era atunci nu mai e si nici nu am reusit sa reproduc, deci ramane "mi s-a parut".

 
incearca si aici :
http://tech.groups.yahoo.com/group/blat/files/Other/


Asta nu l-am gasit, multumesc.
 8/27/2008 12:27:40 AM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
Daca incerc sa compilez clasa intr-un executabil imi spune ca "Unable to find Unknown TAFILES". taFiles e o matrice folosita in SendViaBlat(). In cazul in care comentez toata bucata asta de cod:

IF TYPE("taFiles", 1) = "A" AND !EMPTY(tafiles[1])
    lcBlatParam = lcBlatParam + " -attach "
    FOR lnCountAttachments = 1 TO ALEN(taFiles)
        lcBlatParam = lcBlatParam + this.GetShortPath(ALLTRIM(taFiles(lnCountAttachments))) + ","
    ENDFOR
    lcBlatParam = LEFT(lcBlatParam, LEN(lcBlatParam) - 1) && Remove Extra Comma
ENDIF

nu mai da eroare, dar daca incerc sa comentez o singura linie de acolo, indiferent care, degeaba. Am incercat sa inlocuiesc taFiles() cu taFiles[] si invers, dar nici un efect. Presupun ca are o problema cu faptul ca parametrul respectiv e pasat cu @aFiles in Send(). Da eroare doar la compilarea in proiect, daca folosesc COMPILE CLASSLIB e ok. Cum pot sa scap de asta? Compilarea o face, programul functioneaza. Pot sa creez un tafiles.prg gol pe care sa il includ in proiect ca sa il pacalesc, dar o alta solutie mai eleganta nu exista?
 8/27/2008 8:44:10 AM
User is offlinegeorgian_craciun
77 posts


Re: transmitere email cu attachment
 (N/A)
 wtfia wrote
Daca incerc sa compilez clasa intr-un executabil imi spune ca "Unable to find Unknown TAFILES".


Cand iti da eroarea poti sa o ignori. Executabilul va functiona corect.
Tin minte ca nu au fost probleme.
 8/27/2008 8:44:30 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: transmitere email cu attachment
 (N/A) Modified By Daniel Buduru  on 8/27/2008 8:49:30 AM)
Include in procedura respectiva

EXTERNAL ARRAY  tafiles[1]

Daniel Buduru
 8/27/2008 10:59:47 AM
User is offlineAdrian Gerlan
581 posts
1st




Re: transmitere email cu attachment
 (Romania)
Io... mai ma joc cu clasa asta.. nu e inca perfecta, nu-mi apartine decat in mici modificari ce am apucat sa le fac pe ici colo, face insa multe si se pot invata la fel de multe din ea.



AdiG
mail_1.zip 
 8/27/2008 9:55:08 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
 Daniel Buduru wrote
Include in procedura respectiva

EXTERNAL ARRAY  tafiles[1]

Asta cautam, multumesc.

@Adrian Gerlan: Eu nu pot sa desfac arhiva (mail_1), zice ca e corupta.
 8/27/2008 10:48:39 PM
User is offlineAdrian Gerlan
581 posts
1st




Re: transmitere email cu attachment
 (N/A)
Mai incercam cu alta...

AdiG
mail2.zip 
 8/27/2008 10:51:26 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
 Adrian Gerlan wrote
Mai incercam cu alta...


Nope. Nici asta. Prima arhiva are 200K, asta are 30.
 8/27/2008 10:52:05 PM
User is offlineAdrian Gerlan
581 posts
1st




Re: transmitere email cu attachment
 (N/A)
Ciudat... dupa upload si apoi download, si la mine apare ca fiind corupta arhiva. (si prima si a 2-a)
N-am nici cea mai mica idee care-i problema...
Dar, daca vrei o pot trimite pe mail, messenger sau alta cale de comunicare convenabila tie.


AdiG
 8/27/2008 11:22:51 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
Sunt curios. wtfia@yahoo.com . Multumesc

Legat de codurile de eroare returnate de Blat, http://www.geocities.com/toby_korn/blat/blat_return_codes.htm
Nu stiu cat e de "la zi", dar nu mai are coduri de eroare <0 in lista. Pare sa fie ok. Acum asta e primul link pe care il gasesc pe google, in urma cu cateva zile nu l-am gasit deloc.
 9/1/2008 9:31:47 AM
User is offlinePetre Popescu
253 posts
4th


Re: transmitere email cu attachment
 (Romania)
 wtfia wrote
    CASE lnResult = 1
     THROW "File name (message text) not given" OR ;
       "Bad argument given"
    (...)
    OTHERWISE
     THROW "Unknown Error"
   ENDCASE
  ENDIF

a intrat pe ramura CASE lnResult = 1 cand lnResult era 11 (cred ca am gresit in mesajul anterior). Cazul testat era "Server does not like To: address", adica -1. Blat a returnat 11, iar DO CASE s-a oprit la 1. De ce?

Codul de eroare 11 este de fapt codul de eroare fox si este generat de functia OR din THROW "File name (message text) not given" OR "Bad argument given". 
2.
Arhivele postate par sa fie corupte.
In schimb am reusit cu codul de la : http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,6b86dea6-66ec-4f8f-a610-73dd6f896fb7.aspx
Nu a mers din prima deoarece eu am testat pe GMAIL. Acesta foloseste SSL in timp ce BLAT nu.
Pentru SSL am folosit STUNNEL de la www.stunnel.org (care de asemenea pare free).
Instructiuni pentru instalare/configurare stunnel/blat la
http://sheenonline.biz/2008/07/remember-the-milk-posting-directly-from-your-desktop/
Problema care mai ramane este ca STUNNEL trebuie sa fie instalat si pornit ca service in momentul in care apelezi functia de transmitere mail cu blat. Lucrurile astea se rezolva apeland (cu run, shellexecute) ...ceva de genul: stunnel -install, stunnel -start . Ce nu stiu acum este cum sa verific daca stunnel este instalat/pornit deja.
Am mai citit pe undeva ca din motive de securitate ar fi bine ca stunnel sa fie oprit in momentul in care nu mai avem nevoie de el (dupa transmiterea mail-ului.) - stunnel -stop
 9/1/2008 8:14:47 PM
User is offlinewtfia
142 posts
5th


Re: transmitere email cu attachment
 (Romania)
 Petre Popescu wrote
Arhivele postate par sa fie corupte.

Se pare ca asa face forumul mai nou. Atunci cand au fost puse presupun ca au putut fi descarcate, ceva s-a intamplat intre timp. Daca e cineva curios pot sa trimit clasa printr-o alta metoda.

 
Pentru SSL am folosit STUNNEL de la www.stunnel.org (care de asemenea pare free).

Este.Linux stuff. :)

 
Ce nu stiu acum este cum sa verific daca stunnel este instalat/pornit deja.

Nici eu, dar poti sa incepi de aici: http://fox.wikis.com/wc.dll?Wiki~WindowsService~VFP

 
Am mai citit pe undeva ca din motive de securitate ar fi bine ca stunnel sa fie oprit in momentul in care nu mai avem nevoie de el (dupa transmiterea mail-ului.) - stunnel -stop

Din motive de securitate orice serviciu ar fi bine sa fie oprit atunci cand nu e nevoie de el. De exexmplu Wireless Zero Configuration, Remote Registry, DHCP, etc. Dar asta e alta discutie. Daca opresti stunnel cand nu ai nevoie de el probabil va trebui sa astepti sa porneasca atunci cand ai nevoie. Ar putea fi un dezavantaj, depinde cat de repede porneste.
  Visual FoxPro  Clase - VCX si PRG  transmitere ema...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement