Přeskočit na hlavní obsah

Nastavení SMTP serveru - API

Jak přes REST API uložit, přečíst a otestovat nastavení SMTP serveru pro odesílání e-mailů z firmy.

Autor: Petr Pech

SMTP server, přes který firma odesílá e-maily, lze nastavit i přes REST API. Slouží k tomu adresa /c/{firma}/nastaveni/smtp, kde {firma} je databázový identifikátor firmy.


Předpoklady

K nastavení SMTP serveru musí mít uživatel roli ADMIN s právem serveru Přistupovat do všech firem. Totéž nastavení najdete v desktopové aplikaci v menu Nástroje → Nastavení SMTP serveru.


Uložení nastavení

Nastavení uložíte metodou POST nebo PUT s následujícím XML v těle požadavku:

<nastaveni-smtp> 
<!-- Adresa serveru -->
<host>vzor.seznam.cz</host>
<!-- Port serveru -->
<port>465</port>
<!-- Uživatel -->
<username>vzor@seznam.cz</username>
<!-- Heslo -->
<password>tajnehelso</password>
<!-- Výchozí odesílatel -->
<defaultFrom>Jméno Odesílatele &lt;vzor@seznam.cz&gt;</defaultFrom>
<!-- Zabezpečení spojení -->
<encryptionMode>SSL</encryptionMode>
</nastaveni-smtp>

Položka

Význam

host

Adresa vašeho nebo externího SMTP serveru

port

Port SMTP serveru, například 465 nebo 587

username

Uživatelské jméno, typicky e-mailová adresa. Uvádí se, pokud SMTP server vyžaduje autentizaci.

password

Heslo k uvedenému uživateli. Uvádí se, pokud SMTP server vyžaduje autentizaci.

defaultFrom

Výchozí odesílatel. Lze doplnit jméno odesílatele, nebo ponechat pouze e-mailovou adresu. Uvádí-li se i jméno v lomených závorkách, musí být v XML zakódované jako &lt; a &gt;.

encryptionMode

Režim zabezpečení SMTP komunikace, například SSL nebo TLS

Odpovědí je aktualizace záznamu:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>true</success>
<stats>
<created>0</created>
<updated>1</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>0</failed>
</stats>
<results></results>
</winstrom>


Přečtení nastavení

Uložené nastavení přečtete metodou GET. Namísto hesla získáte pouze příznak o tom, zda je vyplněno:

GET https://demo.flexibee.eu/c/demo/nastaveni/smtp.xml
<?xml version="1.0" ?>
<nastaveni-smtp>
<defaultFrom>vzor@seznam.cz</defaultFrom>
<encryptionMode>SSL</encryptionMode>
<host>smtp.seznam.cz</host>
<password filled="true"></password>
<port>465</port>
<username>vzor@seznam.cz</username>
</nastaveni-smtp>

ℹ️ Pokud SMTP server ve firmě zatím nastavený není, vrátí GET stavový kód 404 se zprávou „Není nastaven SMTP server" a kódem smtpSeverNotSet. Není to chyba volání — jen informace, že konfigurace chybí.

⚠️ Uvádějte příponu .xml nebo .json (případně pošlete hlavičku Accept). Bez ní vrátí server chybu jako HTML stránku a strukturovanou zprávu nezískáte.


Odeslání testovacího e-mailu

Funkčnost nastavení si můžete ověřit odesláním testovacího e-mailu — metodou GET s parametrem testMail, ve kterém uvedete adresu příjemce:

GET https://demo.flexibee.eu/c/demo/nastaveni/smtp.xml?testMail=adresat@testu.cz

V e-mailové schránce příjemce se objeví zpráva:

Předmět: Testovací email
Testovací email ze systému ABRA Flexi.

⚠️ Toto volání skutečně odešle e-mail na zadanou adresu. Používejte jej proto s vlastní adresou, ne s adresou zákazníka.


Neúspěšné požadavky

1. Špatně zadaný port

Při nevalidním portu je odpovědí:

<message>java.lang.IllegalArgumentException: port out of range:4651111</message>

2. Výchozí odesílatel ve špatném tvaru

Pokud defaultFrom neobsahuje platný e-mail, případně jméno není odděleno lomenými závorkami:

<message>Výchozí odesílatel musí obsahovat jednu adresu ve tvaru 'Jméno Příjmení &lt;uzivatel@domena.cz&gt;' nebo 'uzivatel@domena.cz'.</message>

3. Testovací e-mail nelze odeslat

Pokud je SMTP nastaveno chybně a testovací e-mail se neodešle:

<message>com.sun.mail.util.MailConnectException: Couldn't connect to host, port: vzor.seznam.cz, 465; timeout 30000; nested exception is:
java.net.UnknownHostException: vzor.seznam.cz
Couldn't connect to host, port: vzor.seznam.cz, 465; timeout 30000
vzor.seznam.cz</message>


FAQ

Jak SMTP nastavím v aplikaci?

Postup najdete v článcích Nastavení SMTP serveru pro desktopovou aplikaci a Nastavení SMTP serveru ve webovém rozhraní.

Nastavení Google SMTP vrací chybu, co s tím?

Jak přes SMTP odešlu doklady nebo výplatní pásky?


Související

Dostali jste odpověď na svou otázku?