Nodemailer & NodeJS – API za slanje emaila

Cilj ovog blog posta je pokazati kako napraviti API za slanje emaila. To ću postići koristeći NodeJS, ExpressJS, Nodemailer i naravno Gmail.

Postavljanje projekta

Kreiram mapu za projekt i unutar nje pokrećem naredbu

i odmah nakon toga instaliram potrebne NPM pakete:

Express.js: $ npm install express --save
Nodemailer: $ npm install nodemailer--save
bodyParser: $ npm install body-parser -save

Struktura projekta prema package.json sada izgleda ovako:

Sada imam sve spremno za kreiranje datoteke unutar koje će se nalaziti logika API-ja.

API sada mogu i pokrenuti te se uvjeriti da radi. Pokrećem ga naredbom u kojoj riječ “index” označava naziv .js datoteke.

Nodemailer & NodeJS – API za slanje emaila

To je mogla biti i npr. server.js datoteka. U tom bi slučaju API pokrenuo naredbom $ node server.

Na adresi http://localhost:8080/api mogu vidjeti da je API uspješno pokrenut.

Nodemailer & NodeJS – API za slanje emaila

Slanje testnog e-maila

Unutar datoteke index.js sada ću kreirati API za slanje e-maila.

S obzirom na parametar secureConnection: false vrlo je važno da omogućim dopuštanje nesigurnijim aplikacijama da pristupe računu na adresi https://myaccount.google.com/security?pli=1

“Less Secure Apps” - Google

Jer ako to ne napravim dobit ću poruku o grešci što znači da e-mail neće biti poslan/primljen. Ovaj dio mi je zadavao najviše problema prije dvije godine kada sam prvi put radio Nodemailer API. U pitanju je bila funkcionalnost vezana uz resetiranje lozinke.

Nodemailer & NodeJS – API za slanje emaila

Ako sada putem Postmana pokrenem POST zahtjev na adresu http://localhost:8080/api/posaljiEmail vrlo brzo će mi stići e-mail.

Nodemailer & NodeJS – API za slanje emaila

Zašto se u slici iznad kao adresa primatelja nalazi drugačija adresa od one navedene gore u API-ju? To je zbog postavki unutar Gmaila gdje je navedeno da je adresa k*n*a*t@tomislavstankovic.com zadana adresa pošiljatelja. S obzirom da ovdje koristim Gmail kao servis za slanje e-maila jasno je da će on uzeti te zadane postavke.

Nodemailer & NodeJS – API za slanje emaila

E-mail sa “pravim” podacima

U gornjem sam se primjeru uvjerio da moj Nodemailer API uredno radi, a sada želim imati mogućnost određivanja na koju adresu i koji sadržaj želim poslati.

API sada izgleda ovako:

Nodemailer & NodeJS – API za slanje emaila

Ovdje se može vidjeti da podatke šaljem kroz req.body i upravo je to razlog zbog kojeg koristim body-parser. U slučaju da nisam koristio body-parser dobio bi sljedeću grešku.

Ovdje se može vidjeti da podatke šaljem kroz <span class="lang:js decode:true  crayon-inline">req.body</span> i upravo je to razlog zbog kojeg koristim <strong><em><a href="https://www.npmjs.com/package/body-parser" rel="noopener" target="_blank">body-parser</a></em></strong>. U slučaju da nisam koristio <em>body-parser</em> dobio bi sljedeću grešku.

Također, ako ne unesem sve potrebne podatke body-parser neće imati s čime raditi i opet ću dobiti grešku. U ovom slučaju nisam poslao e-mail adresu primatelja.

Nodemailer & NodeJS – API za slanje emaila

Nakon što unesem sve potrebne podatke, body-parser će odraditi svoje i e-mail će biti uspješno poslan/primljen.

Nodemailer & NodeJS – API za slanje emaila

Opel Astra H GTC 2008 1.4 (90KS)

Iako nemam običaj pisati o automobilima odlučio sam ovaj put objaviti jedan takav blog post potaknut blog postom Željka Rihe.

Ako je blog post vezan uz Amazon Kindle Paperwhite III SP prošao više nego dobro nema razloga da tako ne bude i sada. Uostalom, zato i postoji blog da isprobavam razne stvari.

Uvod

Prilikom potrage na novim tj. drugim autom bilo je nekoliko kriterija:

– Benzinac, bez plina.
– Ne više od 99 000km na satu.
– Obavezno s pet vrata jer sam u proteklih 10 godina također imao auto s troja vrata. Na kraju sam ipak odlučio žrtvovati dio funkcionalnosti zbog dinamičnijeg izgleda.
– Auto kupljen u Hrvatskoj.
– Od prvog vlasnika.

Na kraju sam pronašao Opel Astru H GTC koja je zadovoljila većinu kriterija.

Opel Astra H GTC 2008 1.4 (90KS)

Općenito o Astri GTC

U pitanju je Opel Astra H GTC Enjoy iz 2008. godine (30.04.2008.) sa 1.4 benzinskim motorom od 90KS. To je inače osnovni motor u ponudi, ali se više nego dobro ponaša na cesti.

Auto sam preuzeo sa 71 500km na satu u odličnom stanju s obzirom na godište. U međuvremenu sam promijenio sve tekućine i filtere te postavio novi ljetni set guma, kako ne bi bilo iznenađenja.

Opel Astra H GTC 2008 1.4 (90KS)

Paket opreme Enjoy sadržava ručice na vratima u boji vozila, maglenke, ISOFIX, grijane i elektro pokretane retrovizore, klimu, putno računalo i dr.

Iako se o ukusima ne raspravlja, Astra GTC izgleda odlično s obzirom na godinu početka proizvodnje (2004.). Oštre, sportske, linije posebno će privući mlađe vozače. Astra GTC je niža od “obične H” verzije za tri centimetra, a posebno je zanimljivo da je GTC dulji od “obične” Astre H za četiri centimetra.

Opel Astra H GTC 2008 1.4 (90KS)
Montaža ljetnih guma Dunlop SP Sport Maxx RT MFS

Unutrašnjost

Što se unutrašnjosti tiče Astra GTC je iznenađujuće prostrana, kako za vozača i suvozača tako i za putnike na stražnjoj klupi. Sjedala su, barem meni, dobro profilirana i drže u zavojima.

Opel Astra H GTC 2008 1.4 (90KS)

Mane koje bi mogao spomenuti:

Preglednost kada se vozi unatrag, ali to je bilo i za očekivati u automobilu sa sportskom siluetom. Ipak, čak ni to nije problem jer tu su elektro retrovizori pomoću kojih se moguće vrlo precizno unatrag parkirati i na vrlo uskim mjestima.

– Na instrument tabli ne postoji pokazivač radne temperature, ali tome se može doskočiti na putnom računalu na način da se nekoliko sekundi drži tipka Settings i onda klik na tipku BC kroz razne opcije dok se ne dođe do ekrana na kojemu se nalazi i podatak o temperaturi motora.

– Ono što kronično nedostaje u unutrašnjosti je prostor za odlaganje stvari. Znači, osim onih u vratima nema pretinaca za staviti sitnije stvari kao npr. mobitel i novčanik. Postoji nešto malo prostora između ručne kočnice i mjenjača, ali ako se ondje ostavi mobitel i novčanik teže ga je izvući dok je ručna spuštena. Jedino što preostaje je prostor iza sjedala od vozača i suvozača gdje se nalaze pretinci na bočnim stranama auta.

Opel Astra H GTC 2008 1.4 (90KS)

Motor (Z14XEP)

Ranije spomenuti 1.4 litreni benzinac od 90KS s tek 125Nm okretnog momenta iznenađujuće dobro ubrzava i drži brzinu. Motor zahtjeva nešto više okretaja kako bi pružio dovoljno snage.

Opel Astra H GTC 2008 1.4 (90KS)

Jedna od prednosti ovog motora je pogonski lanac umjesto remena. Svi ostali benzinci koji su bili u ponudi uz Opel Astru H GTC imaju remen.

Motor je uparen sa 5-stupanjskim ručnim mjenjačem koji odlično obavlja svoju funkciju i vrlo precizno ulazi u brzine.

Pogonski kotači i gume

Dunlop Sport Maxx RT

Auto se nalazi na standardnim dimenzijama 205/55/R16 tj. 195/65/R15 tako da nije problem pronaći dobre premium gume, ali je zbog broja rupa na felgama nešto teže pronaći zanimljiv model aluminijskih felgi.

205/55/R16 – ljeto

Inače vrlo dobre gume Bridgestone Turanza ER300 koje su do nedavno bile na autu sada su zamijenile Dunlop SP Sport Maxx RT MFS (DOT 0118 DE) koje sam uzeo na preporuku ekipe sa Opel Club Hrvatska foruma.

195/65/R15 – zima

Uz auto su stigle Sava Eskimo S3+ gume koje sam stigao isprobati taman prije ljetne sezone i moram priznati da su se pokazale kao dobre gume, pa čak i na ovako teškom automobilu.

Opel Astra H GTC 2008 1.4 (90KS)

Zaključak

Što se održavanja tiče Astra GTC nema nekih svojih specifičnosti tako da sve ono što vrijedi za Astru H vrijedi i za GTC.

Opel Astra H GTC 2008 1.4

Do sada sam prešao oko 1500km što je malo za neke konkretnije zaključke, ali se nadam da uz redovno održavanje ne bi trebalo biti većih problema. Ako nešto i bude lako nadopišem.

Opel Astra H GTC

Godište: 2008. Opel Astra H GTC 2008 1.4 (90KS)
Dimenzije: 429x175x143 cm
Kilometraža: 72.000
Motor: 1.4, benzinski, atmosferski
Obujam: 1364 ccm
Snaga: 66 kW/90 KS
Mjenjač: ručni, 5 stupnjeva
Prtljažnik: 340 litara
Brzina: 175 km/h

Tehnički pregledi i registracija

U nastavku navodim osnovne informacije vezane uz godišnji tehnički pregled i registraciju. Također ću navesti što je od servisa obavljeno te koji su dijelovi mijenjani.

23.06.2019.

Obavljen tehnički pregled. Rečeno mi je da prije sljedećeg tehničkog trebam promijeniti kočionu tekućinu što mi je čudno jer sam to mijenjao nakon kupnje auta, ali ok nije problem. Glavno da je sve ostalo u redu.

U međuvremenu sam jedino trebao novu podlošku za vijak koji drži lim ispod prostora rezervnog kotača. Osim toga, promijenio sam jednu H7 žarulju.

Trenutno stanje kilometara 77.776km.

Opel Astra H GTC 2008 1.4

09.06.2020.

Jutros sam obavio servis i preventivni pregled vozila te nakon toga odmah otišao na tehnički pregled. Nije bilo iznenađenja. Trenutna kilometraža je 82.137km.

Promijenjeno je sljedeće (1.265,20kn):
– Filter ulja
– Filter zraka
– Filter peludi
– Svijećice ZFR5F
– Ulje Castrol 5W30
– Ulje za kočnice

15.06.2021.

Obavljen tehnički pregled. Nije bilo iznenađenja. Prije toga, standardno, promijenjeni filteri i ulje (Aral High Tronic 5W-40).

Trenutna kilometraža iznosi 87.423km.

18.06.2022.

Obavljen tehnički pregled. Nije bilo iznenađenja. Prije toga, standardno, promijenjeni filteri i ulje (Aral High Tronic 5W-40). Obavljen je i prvi servis ovakve vrste, da je nešto trebalo fizički promijeniti, u pitanju je bila špula kompresora uz nadopunu klime (882,80kn / 117,17€) što je obavljeno u AutoWill Vinkovci. Trenutna kilometraža iznosi 91.126km.

U međuvremenu, od prošle godine, prešao na Michelin CrossClimate Plus cjelogodišnje gume. Osjeti se da su ljeti mekanije, ali osim toga nikakvih problema nije bilo.

19.06.2023.

Sve prošlo uredno. Osim izmjene ulja i filtera ovaj put sam promijenio i svjećice (NGK). Također, pregorila je jedna lampica iznad zadnje tablice pa sam i to promijenio.

Trenutno stanje kilometara iznosi 98.168km.

11.06.2024.

Još jedan tehnički pregled bez iznenađenja. Trenutna kilometraža iznosi 103.160km.

Tehnički pregled: 43,38€
Registracija: 75,98€

20.06.2025.

Obavljen tehnički pregled, opet bez iznenađenja. Od novosti, ove sam godine preventivno promijenio stražnje opruge i granične odbojnike.

Trenutna kilometraža iznosi 108.168km.

Angular Framework resursi

Do sada sam objavio nekoliko blog postova na temu Angular Frameworka koje možete pronaći u kategoriji Razvoj, ali sam odlučio objaviti i ovaj blog post kako bi olakšao pronalazak i pregled svih blog postova vezanih upravo uz Angular Framework jednako kao što sam to napravio i za Ionic Framework, a nadam se da ću isto uskoro učiniti i za NodeJS tj. ExpressJS.

Ako niste pronašli vama zanimljiv/potreban blog post slobodno ostavite komentar s prijedlogom teme pa ću se potruditi objaviti blog post ili pronaći resurs koji će vam biti od pomoći.

Angular 6 – SEO optimizacija

Aplikacije napravljene u Angularu u startu nisu SEO optimizirane što ne znači da to tako mora i ostati. Koristeći ng-toolkit Universal moguće je kroz nekoliko koraka omogućiti da Angular aplikacija postane SEO-Friendly.

Angular CLI

Prije svega, moram provjeriti koju verziju Angular CLI-a imam instaliranu. U ovom slučaju to je verzija 6.0.8

Angular CLI verzija: ng -v

Kreiranje Angular projekta

Novi projekt kreiram i pokrećem sljedećim naredbama

U web pregledniku mogu vidjeti kako projekt trenutno izgleda. Na početnoj se stranici nalazi nekoliko redova teksta.

Angular 6 - SEO optimizacija

Međutim, ako kliknem na desnu tipku miša i odaberem ‘View page source‘ mogu vidjeti sljedeće tj. niti jedan od ranije spomenutih redova teksta ovdje nije vidljiv, a trebao bi biti ako želim imati SEO optimizaciju.

Angular 6 - page source

Dodavanje nove komponente

Novu komponentu dodajem sljedećom naredbom

Nakon što je komponenta kreirana

Angular 6 - nova komponenta

trebam dodati i pripadajuću rutu kako bi se nova komponenta prikazala. To ću napraviti unutar datoteke app-routing.module.ts.

Na početnoj stranici app.component.html sada mogu navesti poveznicu prema novoj komponenti.

Sve to na kraju izgleda ovako

Angular 6 – SEO optimizacija

Međutim, koliko god ja sadržaja dodao tražilice ga neće vidjeti što znači da ga neće moći indeksirati što opet znači da moja Angular aplikacija neće biti SEO optimizirana.

SEO optimizacija

Angular CLI će i ovdje odraditi veliki dio posla umjesto mene.

Pokrećem sljedeću naredbu i nadam se da neće biti grešaka.

ng-toolkit/universal

Aplikaciju ću sada pokrenuti sljedećom naredbom

i odmah mogu vidjeti da je od sada moja Angular aplikacija SEO optimizirana.

Angular 6 – SEO optimizacija

Moguće je primijetiti da početna i nova stranica imaju jednak naslov

Za novu komponentu mogu napraviti poseban naslov na sljedeći način.

Angular 6 – SEO optimizacija

Angular 6 – SEO optimizacija

Zaključak

SEO optimizacija je daleko kompleksnije područje da bi se gore navedeni primjer mogao smatrati cjelovitim rješenjem, ali i ovo je dobar početak za svakog Angular developera.

Struktura projekta:

Ionic Range komponenta

U ovom ću blog postu pokazati kako koristiti Ionic Range komponentu koja korisnicima mobilne aplikacije omogućava odabir vrijednosti pomicanjem klizača po horizontalnoj liniji.

Ionic Range komponenta

Kreiranje aplikacije

Za početak kreiram novu Ionic aplikaciju.

Korištenje komponente

U ovom slučaju nisam morao instalirati nikakav Ionic Native plugin. Dovoljno mi je bilo samo vidjeti što kaže dokumentacija.

Ako u aplikaciju ubacim sljedeći kod, iz dokumentacije, on neće raditi ništa osim što će stajati na ekranu i omogućiti pomicanje klizača.

Zato svakom </ion-range> elementu dodajem funkciju (ngModelChange)="prikazVrijednosti($event)" koja će omogućiti dohvaćanje vrijednosti klizača.

Funkcionalnost se sastoji od samo jedne funkcije.

Što na kraju izgleda ovako:

Ionic Range komponenta

Osim toga, mogu se napraviti i konkretnije stvari. Npr. klizač za izračun broja mjeseci otplate kredita pri čemu je 1 mjesec minimalna vrijednost, a 120 mjeseci tj. 10 godina maksimalna vrijednost.

Funkcionalnost sada izgleda malo drugačije

Ionic Range komponenta

Zaključak

S obzirom da je ova komponenta toliko jednostavna tu se nema što posebno za zaključiti osim da je pomoću ove komponente moguće poboljšati korisničko iskustvo korištenja Ionic aplikacije.

I za kraj, package.json datoteka