Invio mail
Per problemi con l'invio di mail, vedi Troubleshooting_mail
Per maggiori info cercare "meladx" nel file di help chm: il comando "meladx" va usato per l'invio da server, la chiamata "send" per l'invio da programma da client.
Invio tramite ENVOI_MAIL[edit]
fonte: https://matteo72.wordpress.com/2013/12/01/sage-x3-how-to-send-an-e-mail/
Subprog SEND_MAIL(PTO,PCC,PSUBJECT,PBODY,PJOINFIC) Value Char PTO()(0..) Value Char PCC()(0..) Value Char PSUBJECT Value Clbfile PBODY Value Char PJOINFIC() #YTYPMES: 1 = use the global parameter GTYPMES, 2 = sent by server, 3 = sent by client Local Integer YTYPMES : YTYPMES = 1 Local Integer YREQREC : YREQREC = 2 Local Integer YREQIMP : YREQIMP = 2 Local Char YUSER : YUSER = GUSER Local Char YMAIL : YMAIL = "" Local Char YOBJJOI : YOBJJOI = "" Local Char YCLEOBJ : YCLEOBJ = "" Local Char YCHRONO : YCHRONO = "" # 1 = Write trace Local Integer YERD : YERD = 0 Local Char YUSR_EMAIL(250)(0..999) Local Integer YUSR_ENVOI(0..999) Local Integer YUSR_SUIVI(0..999) Local Integer YUSR_NB Local Clbfile YTEXCLB : YTEXCLB = PBODY Local Char YTEXOBJ(250) : YTEXOBJ = PSUBJECT Local Char YPCEJOI(250)(0..99) Local Integer YNBJOI Local Char YTYPJOI(250) : YTYPJOI(0) = "" Local Integer YCATJOI : YCATJOI = 0 Local Char YCONTXT(250) : YCONTXT(0) = "" # #Recipients # YUSR_NB = 0 Local Integer I For I = 0 To dim(PTO) - 1 If vireblc(PTO(I),2) <> "" Then YUSR_EMAIL(YUSR_NB) = vireblc(PTO(I),2) YUSR_ENVOI(YUSR_NB) = 2 #YUSR_SUIVI(YUSR_NB) = 0 YUSR_NB += 1 Endif Next For I = 0 To dim(PCC) - 1 If vireblc(PCC(I),2) <> "" Then YUSR_EMAIL(YUSR_NB) = vireblc(PCC(I),2) YUSR_ENVOI(YUSR_NB) = 3 #YUSR_SUIVI(YUSR_NB) = 2 YUSR_NB += 1 Endif Next # #Attachments !! It works only with 1 attachement !! # #YNBJOI = 0 #For I = 0 To dim(PJOINFIC) - 1 # If vireblc(PJOINFIC(I),2) <> "" Then # YPCEJOI(YNBJOI) = vireblc(PJOINFIC(I),2) # YNBJOI += 1 # Endif #Next YNBJOI = 1 YPCEJOI(0) = vireblc(PJOINFIC(0),2) Call ENVOI_MAIL(YTYPMES,YREQREC,YREQIMP,YUSER,YMAIL,YOBJJOI,YCLEOBJ & ,YCHRONO,YERD,YUSR_EMAIL,YUSR_ENVOI,YUSR_SUIVI,YUSR_NB & ,YTEXCLB,YTEXOBJ & ,YPCEJOI,YNBJOI,YTYPJOI,YCATJOI,YCONTXT) From AWRKMEL End
Ecco come richiamare il metodo
Local Char XMSG(250)(8) Local Char XSUJET(250) Local Integer XXCONTA : XXCONTA = 0 XXCONTA += 1: XMSG(XXCONTA) = "Test email body, row1" + num$(XXCONTA) XXCONTA += 1: XMSG(XXCONTA) = "row 2 " + num$(XXCONTA) XSUJET = "E-mail subject" Call SEND_MAIL("xxx.xxx@xxxxx.xxx","",XSUJET,XMSG,"")
Invio tramite meladx[edit]
Comando sistema: meladx -v -s mail.sagedev.it -r info@sagedev.it <C:\SAGE\SAGEX3V6\X3V6\Folders\SAGEDEV\file.txt
Contenuto file
From: info@sagedev.it To: corsi@sagedev.it Subject: Sagedev, Invio Documento Gentile XXX, con la presente inviamo ... Cordiali saluti # Application/others ; name="TEST1.pdf"[TEST1.pdf] "C:\temp\TEST1.pdf" # Application/others ; name="TEST2.doc"[TEST2.doc] "C:\temp\TEST2.doc"
Esempio (da verificare) con scrittura file via programma:
$APERTURA_MAIL Openo filpath("TMP",'crmordini'+num$(adxpid),"TXT"),0 Using [XOUT] Wrseq 'From: crmordiniduplicati' Using [XOUT] Wrseq 'to: XXX@ZZZ.it' Using [XOUT] Wrseq 'cc: YYY@ZZZ.it' Using [XOUT] Wrseq 'Subject: Sagedev, Invio Documento ' Using [XOUT] Char NOMEFILE (23) Wrseq '' Using [XOUT] If YERRSOLFAT = 2 and YERR < 1 Wrseq 'NESSUNA RIGA INSERITA PER SOLO FATTURATO TRACCIA YORDCRM' Using [XOUT] ELSE Wrseq 'ci deve essere qualche dato duplicato sugli ordini del crm controllare TRACCIA YORDCRM' Using [XOUT] Endif Local Integer XSTAT Openo Using [XOUT] XMAIL = "meladx"-"-s"-"outlook.unidom.local"-"-r"-"KKK@ZZZ.it"+' -v <'- filpath("TMP",'crmordini'+num$(adxpid),"TXT") Call SYSTEME(adxmac(0),XMAIL ,"",XSTAT) From ORDSYS Return
Invio tramite Workflow[edit]
(Soluzione A.Zampieri)
Passi d'esempio:
- creare l'evento YYY nella tabella 908 con descrizione "Chiamata a programma" e descr. breve "Da pgm" (è meglio utilizzare un codice evento nuovo per evitare di intersecare altri utilizzi)
- creare il workflow YMAIL
- con codice evento YYY
- Tipo evento "Altro",
- nel riquadro "Gestione" della scheda "Generale" mettere la spunta in "Attivazione Mail"
- nella scheda "Destinatari" inserire una riga con Tipo "Utente" e Destinatari "GYUSRTMP" (è una variabile globale che va definita nel programma), Invio mail "Si" , il resto "No"
- nella scheda "Messaggio"
- nell'oggetto scrivere
GYOBJTMP
- nel testo scrivere
|GYBODYTMP|
(va messo in mezzo a due pipeline per far capire che, all'interno del testo, è una variabile globale)
- nell'oggetto scrivere
- crea regola
- richiamare il codice seguente per inviare una mail
Global Char GYUSRTMP(20),GYOBJTMP(20),GYBODYTMP(50) GYUSRTMP = "info@sagedev.it" GYOBJTMP = "PROVA INVIO MAIL" GYBODYTMP = "MAIL MANDATA DAL MIO PROGRAMMA" Call WORKFLOW (1,"YYY","",GUSER) From AWRK Kill GYUSRTMP Kill GYOBJTMP Kill GYBODYTMP
"YYY" è il codice evento
Le chiamate Kill servono per cancellare le variabili globali temporanee.
NB: nel campo dove va inserito il nome dell'allegato, per allegare due file scrivere i file separati da punto e virgola:
"nomefile1.txt;nomefile2.txt"
GFILPATH+";"+GYFILE2
Invio tramite ASYRMAIL.ASEND_MAIL[edit]
Local Integer STA Local Integer TRACE # valori possibili CST_AYES (si) o CST_ANO (no) Local Char FIC_TRACE(250) Local Char ISSUERMAIL(250) Local Char A_USER(250)(1..) Local Char CC_USER(250)(1..) Local Char OGGETTO(250) Local Clbfile BODY(0) Local Char ATTACHMENTS(250)(1..) #allegati A_USER(1)="corsi@sagedev.it" CC_USER(1)="xxx@sagedev.it" CC_USER(2)="yyyyy@sagedev.it" OGGETTO="Test invio mail" ISSUERMAIL="info@sagedev.it" TRACE = 2 ATTACHMENTS(1) = 'S:\Sage\SAGEX3\folders\SAGEDEV\menuita' ATTACHMENTS(2) = "[ATT]/test.txt" Append BODY , 'Prima riga della mail'+chr$(10) Append BODY , 'Ciao ciao'+chr$(10) STA =func ASYRMAIL.ASEND_MAIL(GACTX, ISSUERMAIL, A_USER, CC_USER, OGGETTO, BODY, ATTACHMENTS, TRACE) If STA <> [V]CST_AOK Then Infbox( mess(1163,196,1)) Else Infbox( "Mail spedita!") Endif
Valore di ritorno:
- [V]CST_AOK: tutto OK
- [V]CST_AINFO: uno o più allegati non sono disponibili
- [V]CST_AERROR: Errore durante il processo di invio
Se viene impostato con la traccia, per ogni mail inviata nella cartella TMP del dossier troverai due file di log, uno con i comandi SMTP, l'altro con il log di connessione.
Questo il link relativo per l'help Sage V7: /help/en-US/V7DEV/api-guide_send-mail.html