Posílání gmailu přes příkazovou řádku s OAuth2
Ahojte,
občas využívám možnosti posílání mailů přes program v příkazové řádce Windows - ať už Swithmail nebo SendSMTP nebo cokoliv jiného podobného. Hodí se to v různých automatizačních dávkách, kdy na závěr pošle log.
Teď řeším situaci, kdy musím využít SMTP server gmailu, aniž bych ovšem v gmailu povolil přístup pro "Less secure apps" (sice to prozatím funguje ale brzo to Google zařízne).
A to je problém. Nenašel jsem zatím žádnou utilitku pro příkazovou řádku, která by to uměla. Čistě náhodou - neřešil jste to už někdo někdy a nepřišli jste na řešení?
Autoři populárních smtp mail senderů vesměs tvrdí, že "by to šlo naprogramovat ale byla by s tím spousta práce a protože za tím stojí velký hnusná Google, tak se na to můžou vykašlat".
Děkuji.
Takže fakt to musí být SMTP velkýho hnusnýho Googlu, přes to nejede vlak, jo?
Jinak bych to řešil odesláním mailu na nějaký freemail, kde by byl nastavený filtr (třeba podle klíčového slova) na přeposlání na Gmail.
Bohužel je to tak. Půjdou přes to citlivá data, zadavatel trvá pouze na službách Google. Citlivá data považuje u Googlu v bezpečí.(...)
Citlivá data jdou před odesláním zašifrovat...
Jestli ti nevadi Java, tak ti to napisu...
Jestli to půjde volat z příkazové řádky a bude to umět posílat přílohy a diakritiku a víceřádkové maily, tak to snad i koupím :D
Večer na to mrknu, jak moc by to bylo složité...
Neni to nic složitého, zkus sepsat, co všechno by to mělo umět. Pokud stačí, poslat mail v češtině s jednou přílohou, tak už mám v podstatě hotovo...
to je maso tohle :D
Ano, stačí poslat mail v češtině s jednou přílohou. Mail stačí plaintext ale aby v něm člověk mohl řádkovat, aby to bylo přehledné...
Tak jo, Alpha verze (neosetrene vyjimky - nexistujici soubor s prilohou, poradi parametru v CLI).
https://uloz.to/file/F0P3kgZtxaZK/gmailcli-zip
Predpoklady:
1) v souboru gmailcli.properties jsou udaje k oAuth (momentalne funkcni testovaci ucet testicek69@gmail.com - to je ucet, ze ktereho budou maily odchazet), soubor musi byt ve stejnem adresari jako GmailCli-1.0.0.jar
2) potrebujes mit nainstalovano JRE alespon 1.8 (zjistis pres java -version)
Pouziti z komandlajny (poradi parametru musi byt dodrzeno):
Priklad (soubor a.txt je ve stejnem adresari jako jar):
Pripadne bugy opravim. Enjoy!
Vřelý dík, ozkouším. Resp. snažím se ozkoušet ale prosímtě kde splaším ty řetězce pro clientId, clientSecret, access token a refresh token?
Dosud jsem žil v době normálního jména a hesla pro SMTP, tohle vypadá nějak nechutně....
Však to máš priamo v nadpise :) https://en.wikipedia.org/wiki/OAuth
Myslím, že to všetko nastavíš v Google Cloud Platform, kam sa prihlásiš dotyčným účtom.
No, neni to uplne easy ziskat... Zitra pisnu jak na to...
https://plswiderski.medium.com/google-api-authentication-with-oauth-2-on-the-example-of-gmail-a103c897fd98
Tady je popis jak ziskat access a refresh token. V kroku "Confirm permissions request" nemusis pouzivat SoapUI postaci curl:
Huh, tohle vypadá na dlouho... nějak se tím prohryžu, díky!
Kdyby sis nevedel rady, ozvi se...
Jinak jsem to uz dodelal do podoby, za kterou se nemusim stydet. Je tam lepsi CLI, kde jsou oznacene parametry a nezalezi na jejich poradi, plus na nimi funguji zakladni validace.
Binarku i zdrojak najdes tady:
https://github.com/masodj/GmailCli