F_MAIL_MS365()

Siuntimas elektroniniu paštu tiesiogiai per pašto serverį, jungiantis per "Microsoft 365" (Microsoft Graph API).

Siuntimo per MS365 administravimas.

(nuo 124 RIVILE GAMA versijos)

Ši funkcija leidžia siųsti laiškus jungiantis prie "Microsoft 365" naudojant oAuth2 (prisijungimo tipai: Authorization Code Flow, Client Credentials Flow) siuntimui naudojamos Microsoft Graph API užklausos. SMTP protokolas nenaudojamas, vartotojų pašto slaptažodžiai sistemoje nesaugomi.

Naudojimo reikalavimai :

  • Chilkat programinė biblioteka turi būti registruojama kiekvienoje darbo vietoje – registruojama automatiškai pirmą kartą paleidus funkciją, naudojančią Chilkat biblioteką. Minimali Chilkat versija: 11.2.0
  • Rivile GAMA sistemos INIT'e reikia aprašyti prisijungimo prie serverio nustatymus - funkcija MS365_INIT().
  • Aplikacijai "Microsoft Entra" portale turi būti suteikti Microsoft Graph leidimai. Jie priklauso nuo prisijungimo tipo, žr. Siuntimo per MS365 administravimas.

Sintaksė

F_MAIL_MS365(tcTo, tcSubject, tcBodyPlain, [tcFiles], [tcBodyHTML], [tcCC], [tcBCC], [tcFrom], [tcModul])

Grąžina

.T. - jei išsiųsta be klaidų, priešingu atveju .F.

Parametrai

Parametras Aprašymas Formatas
tcTo el. pašto adresas - gavėjas. Kelis gavėjus galima nurodyti per kabliataškį C
tcSubject laiško pavadinimas C
tcBodyPlain laiško turinys paprastu tekstu C
tcFiles prisegami failai išvardinti per kabliataškį C
tcBodyHTML laiško turinys HTML formatu (formatizuotas tekstas). Jei nurodytas, turi pirmenybę prieš tcBodyPlain C
tcCC laiško kopijos gavėjas. Kelis gavėjus galima nurodyti per kabliataškį C
tcBCC laiško kopijos nematomas gavėjas. Kelis gavėjus galima nurodyti per kabliataškį C
tcFrom siuntėjo adresas (standartiškai imamas iš parametro SS_SMTP_VART). Galima sintaksė su vardu: Jonas Jonaitis <jonas@imone.lt> C
tcModul modulis pagal kurį imami prisijungimo duomenys iš parametrų sąrašo C

Siuntėjo (tcFrom) parinkimo taisyklės:

  • Naudojant Auth_Code tipą, laiškas visada siunčiamas prisijungusio vartotojo vardu. Siuntėjo pakeisti negalima, parametras tcFrom siuntėjo dėžutės nekeičia.
  • Naudojant Cred_Secret arba Cred_Cert tipą, siuntėjas privalomas. Jis imamas tokia tvarka: tcFrom parametras, parametras SS_SMTP_VART.

Norint pamatyti klaidą, reikia vartotojui uždėti SISTEMOS INIT‘ą, kuris techniškai parodo visą pilną klaidos pranešimą.

titi_pagr.smtp_server="EXECSCRIPT("
titi_pagr.smtp_server=titi_pagr.smtp_server+'[LPARAMETERS _adresas,_antraste,_tekstas,_failas]+CHR(13)+CHR(10)+'
titi_pagr.smtp_server=titi_pagr.smtp_server+'[_klaida=""]+CHR(13)+CHR(10)+'

titi_pagr.smtp_server=titi_pagr.smtp_server+'[lRet=f_mail_ms365(_adresas,_antraste,_tekstas,_failas)]+' && Ideti savo siuntimo funkcija

titi_pagr.smtp_server=titi_pagr.smtp_server+'CHR(13)+CHR(10)+'
titi_pagr.smtp_server=titi_pagr.smtp_server+'[=IIF(!EMPTY(_klaida),f_info(_klaida,.T.),"")]+CHR(13)+CHR(10)+'
titi_pagr.smtp_server=titi_pagr.smtp_server+'[return lRet]+CHR(13)+CHR(10)+'
titi_pagr.smtp_server=titi_pagr.smtp_server+"[],_adresas,_antraste,_tekstas,_failas)"

Pavyzdžiai

f_mail_ms365("info@testas.lt","Antraštė","Laiško tekstas","c:\test.txt")'

Pastaba 1

Sistemos INIT-e nurodomas prisijungimo prie serverio metodas bei prisijungimo duomenys:

MS365_INIT

MS365_INIT(tcClient_id, tcTenant_id, tcLogin_type, [tlnTokenStorage], [tcClient_secret], [tcCert_thumbprint], [tcCert_file], [tcCert_passw], [tcScope], [tnAuth_port])
Parametras Aprašymas Formatas
tcClient_id Client ID C
tcTenant_id Tenant ID (nenurodžius naudojama reikšmė common) C
tcLogin_type prisijungimo tipas: Auth_Code, Cred_Secret, Cred_Cert. Nenurodžius naudojamas Auth_Code C
tlnTokenStorage prisijungimo raktų saugojimas (galioja tik Auth_Code): 0 arba .F. - raktai nesaugomi, jungiamasi kiekvieno seanso metu; 1 arba .T. - saugoma „Windows Credential Manager“ saugykloje; 2 - saugoma „Windows Credential Manager“ saugykloje atskirai kiekvienai įmonei N / L
tcClient_secret Secret raktas (galioja tik Cred_Secret) C
tcCert_thumbprint Sertifikato atspaudo ID (galioja tik Cred_Cert) C
tcCert_file Sertifikato failas su takeliu (galioja tik Cred_Cert) C
tcCert_passw Sertifikato failo slaptažodis C
tcScope teisių sritis (scope). Numatytosios reikšmės: Auth_Code - offline_access mail.send, Cred_Secret ir Cred_Cert - https://graph.microsoft.com/.default. Keisti reikia tik išskirtiniais atvejais C
tnAuth_port lokalus prievadas patvirtinimui iš naršyklės gauti (galioja tik Auth_Code). Numatytoji reikšmė 55110. Turi sutapti su aplikacijos Redirect URI, pvz. http://localhost:55110/ N

Kokius prisijungimo metodus galima naudoti:

  • Auth_Code - naudojamas siunčiant laiškus paties vartotojo vardu. Pats vartotojas suteikia teises sistemai siųsti laiškus. Suteiktos teisės galioja iki 60 dienų.
  • Cred_Secret - naudojamas siunčiant laiškus kaip servisas. Nurodyto Secret rakto teisės galioja iki 2 metų.
  • Cred_Cert - naudojamas siunčiant laiškus kaip servisas. Nurodyto sertifikato teisės galioja iki 10 metų.

Naudojami Microsoft Graph leidimai:

  • Auth_Code - Delegated (deleguotasis) leidimas Mail.Send ir offline_access. Administratoriaus sutikimas nebūtinas, sutikimą duoda pats vartotojas.
  • Cred_Secret ir Cred_Cert - Application (programos) leidimas Mail.Send. Būtinas administratoriaus sutikimas (Grant admin consent). Šis leidimas standartiškai leidžia siųsti iš bet kurios organizacijos dėžutės. Kaip siuntimą apriboti viena dėžute, žr. Siuntimo per MS365 administravimas.

Rekomendacijos:

  • Auth_Code - naudoti kai pats vartotojas siunčia laiškus. Pavyzdžiui: ms365_init("95bac988-e3bf-4349-9f05-e9cfb573c588","458c5b55-27b4-4b8d-ad7e-55f173620ca8","Auth_Code",.T.)
  • Cred_Secret - naudoti siunčiant laiškus kaip servisas. Pavyzdžiui: ms365_init("95bac988-e3bf-4349-9f05-e9cfb573c588","458c5b55-27b4-4b8d-ad7e-55f173620ca8","Cred_Secret",.F., "wpT8Q~sSJAeyQFmsG~-FrEZcUetFUdRniqXX6au-")
  • Cred_Cert - naudoti kartu su parametru tcCert_thumbprint kai naudojama siunčiant laiškus automatizuotai arba kai siunčia visa įmonė vienu vardu. Pavyzdžiui: ms365_init("95bac988-e3bf-4349-9f05-e9cfb573c588","458c5b55-27b4-4b8d-ad7e-55f173620ca8","Cred_Cert",,,"3D0DD39100FDA370218440DD5BB7E9B19AE455FE")

Pastaba 2

Naudojant MS365 kaip pagrindinį laiškų siuntimo metodą, sistemos INIT-e turi būti užprogramuota:

MS365_INIT(tcClient_id, tcTenant_id, tcLogin_type, [tlnTokenStorage], [tcClient_secret], [tcCert_thumbprint], [tcCert_file], [tcCert_passw])
titi_pagr.smtp_server='f_mail_ms365(_adresas,_antraste,_tekstas,_failas)'

Pastaba 3

Naudojant MS365 kaip pagrindinį laiškų siuntimo metodą, norint naudoti šabloną su stiliumi, sistemos INIT-e galima užprogramuoti:

MS365_INIT(tcClient_id, tcTenant_id, tcLogin_type, [tlnTokenStorage], [tcClient_secret], [tcCert_thumbprint], [tcCert_file], [tcCert_passw])
titi_pagr.smtp_server='f_mail_ms365(_adresas,_antraste,"",_failas,STRTRAN(F_FILETOSTR("email_sign.html"),"[[BODY]]",STRTRAN(xml_encode(_tekstas),"&#10;","<br>")))'

Pastaba 4

Siunčiant laiškus funkcijos f_mail_ms365() pagalba, yra galimybė nurodyti laiško kopijos gavėjų adresus.
Jie aprašomi parametre SS_SMTP_KOP.

Siunčiant per bendras pašto dėžutes arba naudojant metodus Cred_Secret arba Cred_Cert, parametre SS_SMTP_VART reikia nurodyti vartotojo vardą, kuriuo bus vykdomas siuntimas (parametre užpildome tik vardą). Tas vartotojas turi turėti teisę siųsti laiškus naudojant Sistemos INIT’e nurodytus prisijungimo duomenis.

Pastaba 5

Saugumo informacija administratoriams:

  • Siuntimas vykdomas kliento darbo vietoje. Jungiamasi tiesiogiai prie login.microsoftonline.com ir graph.microsoft.com per HTTPS. Rivile ar trečiųjų šalių serveriai siuntime nedalyvauja.
  • Prisijungimo raktai (access ir refresh token) saugomi tik tada, kai tai nurodyta parametru tlnTokenStorage: „Windows Credential Manager“ saugykloje arba Rivile GAMA duomenų bazėje.
  • Secret rakto ar sertifikato keitimo (rotacijos) eiga aprašyta puslapyje Siuntimo per MS365 administravimas.