Orbito - Dokumentacja modułówOrbito - Dokumentacja modułów
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
  • API biblioteki

    • API biblioteki @orbito/api-lib
    • Core
    • Log
    • Utils
    • Pages
    • Automation
    • DB
    • Config
    • Files
    • Problems
    • History
    • OAuth
    • Time
    • Mail
    • Templates
    • Lock
    • Uprawnienia

Mail

Moduł Mail służy do wysyłania wiadomości e-mail z wnętrza modułu — powiadomień o zamówieniach, alertów o błędach synchronizacji, raportów itp. Wiadomość wysyła rdzeń Orbito, a nie sam moduł: nie potrzebujesz własnego serwera SMTP ani żadnej konfiguracji.

const { Mail } = require('@orbito/api-lib');

await Mail.sendMail(
  'klient@example.com',
  'Twoje zamówienie zostało wysłane',
  '<p>Zamówienie <b>#1234</b> zostało nadane.</p>'
);

Serwer nadawczy wybiera firma

Nie przekazujesz companyId ani danych serwera – platforma wysyła maila w kontekście firmy na podstawie tożsamości połączenia kontenera (szczegóły w Kontekst firmy). Firma w swoich ustawieniach wybiera, czy jej maile wychodzą przez serwer Orbito, czy przez jej własny serwer SMTP (z jej domeny i adresu). Dla modułu jest to przezroczyste – kod jest identyczny w obu przypadkach.

Mail.sendMail

await Mail.sendMail(to, subject, content, options?)
ParametrTypWymaganyOpis
tostringTakAdres e-mail odbiorcy
subjectstringTakTemat wiadomości
contentstringTakTreść wiadomości w HTML (patrz niżej – to wnętrze szablonu, nie pełny dokument)
optionsobjectNieOpcje dodatkowe
options.titlestringNieNagłówek wyświetlany nad treścią wiadomości
options.replyTostringNieAdres, na który trafią odpowiedzi odbiorcy

Zwraca Promise<{ messageId: string }> – identyfikator nadany przez serwer pocztowy.

const { Mail } = require('@orbito/api-lib');

// Minimalna wysyłka
await Mail.sendMail('klient@example.com', 'Potwierdzenie', '<p>Dziękujemy za zakup!</p>');

// Z nagłówkiem i adresem zwrotnym
await Mail.sendMail(
  'klient@example.com',
  'Twoje zamówienie zostało wysłane',
  `<p>Zamówienie <b>#${order.number}</b> zostało nadane.</p>
   <p>Numer śledzenia: ${order.trackingNumber}</p>`,
  {
    title: 'Zamówienie wysłane',
    replyTo: 'sklep@twojafirma.pl'
  }
);

Szablon i branding

Przekazany content nie jest wysyłany 1:1 – rdzeń opakowuje go w szablon graficzny Orbito: logo na górze, opcjonalny nagłówek (options.title), Twoja treść oraz stopka „Wiadomość wysłana przez moduł X w systemie Orbito".

Dlatego content powinien być fragmentem HTML (akapity, tabele, linki), a nie pełnym dokumentem:

// ❌ Nie wysyłaj pełnego dokumentu
await Mail.sendMail(to, subject, '<html><body><p>Treść</p></body></html>');

// ✅ Samo wnętrze
await Mail.sendMail(to, subject, '<p>Treść</p>');

Maile z szablonów firmy

Mail.sendMail wysyła treść, którą sam zbudujesz. Gdy właściciel firmy ma wysyłać maile o treści edytowanej w panelu (np. „Twoje zamówienie zostało nadane"), robi to wbudowana akcja automatyzacji send-template-email: renderuje zapisany szablon firmy i wysyła osobny mail na każdy adres odbiorcy (stały adres i/lub adres ze zmiennej). Wiadomość niesie HTML oraz automatycznie wygenerowaną wersję tekstową. Ta wersja jest dodawana tylko do maili z szablonów – Mail.sendMail wysyła sam HTML.

Moduł nie wywołuje tej akcji, tylko udostępnia szablonom swoje dane jako zmienne – patrz Templates.

Limity

LimitWartość
Maksymalny rozmiar treści256 KB
ZałącznikiNiedostępne
Liczba wiadomości30 / minutę na firmę

Przekroczenie limitu lub błąd serwera pocztowego kończy się odrzuceniem promisy z Error – obsłuż to jak każdy inny błąd:

try {
  await Mail.sendMail(params.email, 'Raport dzienny', reportHtml);
} catch (err) {
  Log.error('Nie udało się wysłać raportu', { error: err.message });
}

Brak cichego fallbacku

Jeśli firma używa własnego serwera SMTP i serwer ten odrzuci wiadomość, błąd trafia do Twojego modułu – wiadomość nie zostanie automatycznie wysłana przez serwer Orbito. Firma świadomie wybrała własny serwer i sama odpowiada za jego poprawną konfigurację.

Dobre praktyki

Nie wysyłaj masowo – limit 30 wiadomości na minutę dotyczy całej firmy (wszystkich jej modułów łącznie). Do wysyłek marketingowych używaj dedykowanych narzędzi, a Mail traktuj jako kanał powiadomień transakcyjnych.

Waliduj adresy przed wysyłką – nieprawidłowy adres odbiorcy odrzuca wywołanie:

if (!customer.email) {
  Log.warn('Klient bez adresu e-mail, pomijam powiadomienie', { customerId: customer._id });
  return;
}
await Mail.sendMail(customer.email, subject, content);

Nie umieszczaj wrażliwych danych w treści – haseł, tokenów, pełnych numerów kart. Wiadomość e-mail nie jest bezpiecznym kanałem.

Ostatnio zaktualizowano:: 13.10.2026, 09:44
Contributors: Wiktor Koźmiński, Claude Fable 5, Claude Fable 5.1
Prev
Time
Next
Templates