<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_smtp_client_functions</id>
	<title>FULL-C: smtp client functions - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_smtp_client_functions"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_smtp_client_functions&amp;action=history"/>
	<updated>2026-06-13T17:58:20Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_smtp_client_functions&amp;diff=289&amp;oldid=prev</id>
		<title>Adamn v 27. 6. 2021, 09:06</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_smtp_client_functions&amp;diff=289&amp;oldid=prev"/>
		<updated>2021-06-27T09:06:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 27. 6. 2021, 09:06&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot; &gt;Řádek 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;__NOTOC__&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Princip ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Princip ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_smtp_client_functions&amp;diff=288&amp;oldid=prev</id>
		<title>Adamn: Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_smtp_client_functions&amp;diff=288&amp;oldid=prev"/>
		<updated>2021-06-27T09:05:55Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk &amp;#039;&amp;#039;&amp;#039;FULL-C&amp;#039;&amp;#039;&amp;#039;, který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: email ==&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat email, na určenou adresu, prostřednictvím SMTP serveru. Obsah emailu, nadpis (subject) a cílovou emailovou adresu určuje FULL-C program.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void smtp_send(char * TargetEmailAddress, char * EmailSubject, char * TextContent);&lt;br /&gt;
 unsigned int smtp_send_status(void);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS se připojí k SMTP serveru a pošlu mu email, vytvořený z parametrů funkce '''smtp_send()'''.&lt;br /&gt;
&lt;br /&gt;
Odesílání emailu chvíli trvá a přitom může dojít i k chybě nebo odmítnutí SMTP serverem. FULL-C program pravidelně kontroluje stav voláním '''smtp_send_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS email.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;sending email...\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 smtp_send(&amp;quot;test@email.cz&amp;quot;, &amp;quot;Test Subject&amp;quot;, &amp;quot;This is the first line.\nAnd this is the second line.&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // pockame na dokonceni&lt;br /&gt;
 status = smtp_send_status(); &lt;br /&gt;
 while (status == 277)&lt;br /&gt;
 {&lt;br /&gt;
   status = smtp_send_status();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // zpracujeme vysledek&lt;br /&gt;
 if (status == 256)&lt;br /&gt;
 {&lt;br /&gt;
   // uspech&lt;br /&gt;
   printf(&amp;quot;DONE OK \n&amp;quot;);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   // email nebyl odeslan, chyba&lt;br /&gt;
   printf(&amp;quot;ERROR: %u \n&amp;quot;, status);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''smtp_send_status()''' pro zjištění okamžitého stavu.&lt;br /&gt;
&lt;br /&gt;
  smtp_send_status()         význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, žádná akce nebyla zahájena&lt;br /&gt;
  256                     |  hotovo OK (email doručen na SMTP server)&lt;br /&gt;
  257                     |  timeout (email neodeslán, server nereaguje)&lt;br /&gt;
  258                     |  SMTP server není připraven komunikovat (email neodeslán)&lt;br /&gt;
  259                     |  chyba v &amp;quot;HELO&amp;quot; odpovědi (pokud se používá právě &amp;quot;HELO&amp;quot;) (email neodeslán)&lt;br /&gt;
  260                     |  SMTP sender odmítl adresu odesílatele jako neplatnou (email neodeslán)&lt;br /&gt;
  261                     |  SMTP sender odmítl adresu příjemce jako neplatnou (email neodeslán)&lt;br /&gt;
  262                     |  SMTP chyba &amp;quot;554 Relay Access Denied&amp;quot; (server odmítá přeposlat email - antispam ochrana) (email neodeslán)&lt;br /&gt;
  263                     |  SMTP server odmítá přijmout text těla emailu (email neodeslán)&lt;br /&gt;
  264                     |  SMTP server nepřijal email (not queued) (email neodeslán)&lt;br /&gt;
  265                     |  SMTP server nepodporuje &amp;quot;AUTH LOGIN&amp;quot; příkaz (email neodeslán)&lt;br /&gt;
  266                     |  SMTP server odmítl uživatelské jméno pro přihlášení (email neodeslán)&lt;br /&gt;
  267                     |  SMTP server odmítl heslo pro přihlášení (email neodeslán)&lt;br /&gt;
  268                     |  SMTP server hlásí chybu &amp;quot;550 Invalid Recipient&amp;quot; (email neodeslán)&lt;br /&gt;
  269                     |  nelze otevřít spojení na TCP server (email neodeslán)&lt;br /&gt;
  270                     |  pokoušíte se o odeslání dalšího emailu, zatímco předchozí činnost ještě není dokončena (nový email neodeslán)&lt;br /&gt;
  271                     |  SMTP chyba &amp;quot;501 Wrong Syntax&amp;quot; (email neodeslán)&lt;br /&gt;
  272                     |  není k dispozici FULL-C heap paměť pro sestavení a odeslání emailu (email neodeslán)&lt;br /&gt;
  273                     |  v tuto chvíli nemá zařízení SDS platnou vlastní IP adresu (email neodeslán)&lt;br /&gt;
  274                     |  SMTP chyba &amp;quot;421 You Have Been Temporarily Banned&amp;quot; (antispam ochrana na serveru) (email neodeslán)&lt;br /&gt;
  275                     |  zařízení SDS nemá Ethernetové připojení (odpojený kabel, vypnutý switch, ...) (email neodeslán)&lt;br /&gt;
  276                     |  funkce byla zavolána s neplatnými parametry (email neodeslán)&lt;br /&gt;
  277                     |  čekejte, pracuji (právě se SDS pokouší odeslat email)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== POZOR ==&lt;br /&gt;
&lt;br /&gt;
Dokud není email úplně odeslán, musí být všechny tři texty stále platné a k dispozici. Toto je příčinou častého problému, kdy se jednotlivé vstupy do funkce alokují na lokálním stacku, a volající funkce se opustí dříve než je email skutečně odeslán (nepočká se na výsledek smtp_send_status() viz příklad). Potom se např. odešle email s prázdným obsahem (body) atd. - příčinu je potřeba nejdříve hledat ve vlastním full-c programu.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>