NetSendo Logo
Platform Updates

NetSendo v2.2.0: wypisanie jednym kliknięciem i agenci AI

NetSendo Team7 min czytania
NetSendo v2.2.0: wypisanie jednym kliknięciem i agenci AI

Od 2024 roku Gmail i Yahoo wymagają od nadawców masowych obsługi wypisania jednym kliknięciem. Filtry antyspamowe obniżają też ocenę maili, które zawierają tylko HTML. Jeśli Twoja platforma pomija którąkolwiek z tych zasad, kampanie trafiają do spamu bez względu na jakość treści.

NetSendo v2.2.0 rozwiązuje oba problemy. Pozwala też agentom AI skonfigurować prawie całą platformę przez API i MCP, zapisuje odpowiedzi subskrybentów w CRM i przebudowuje silnik lejków, tak aby lejki robiły to, co pokazuje kreator. To duże wydanie, więc w tym artykule opisujemy najważniejsze zmiany i to, co musisz zrobić przy aktualizacji.

TL;DR: v2.2.0 dodaje maile multipart/alternative (HTML i zwykły tekst), automatyczne nagłówki List-Unsubscribe zgodne z RFC 8058, przełączniki śledzenia dla skrzynki i dla wiadomości, wykrywanie odpowiedzi przez IMAP, 140 narzędzi MCP (wcześniej 77) oraz lejki budowane przez API z prawdziwym rozgałęzieniem testów A/B. Przechodzi na MySQL 8.4 LTS, Laravel 13, Inertia 3 i Node 24, a także naprawia wysyłkę SMS, wyzwalacze lejków, listenery uruchamiane dwukrotnie i błąd stored XSS. Przed aktualizacją zrób kopię zapasową bazy danych.

🚀 Co nowego w v2.2.0

📨

Wersja tekstowa

Każdy mail wychodzi jako multipart/alternative, więc SpamAssassin nie oznacza go już jako MIME_HTML_ONLY.

🚪

Wypisanie jednym kliknięciem

Nagłówki RFC 8058 i endpointy POST, których wymagają Gmail i Yahoo.

🤖

140 narzędzi MCP

Agenci AI mogą zarządzać szablonami, automatyzacjami, formularzami, webhookami i mailami systemowymi.

💬

Wykrywanie odpowiedzi

Odpowiedzi subskrybentów trafiają do historii w CRM, uruchamiają automatyzacje i dodają punkty w lead scoringu.

Każdy mail ma teraz wersję tekstową

Przed tym wydaniem SendGrid, SMTP, Gmail i NMI wysyłały wyłącznie HTML. Teraz każdy mail zawiera część text/plain obok HTML. Możesz napisać własną wersję tekstową w edytorze (Wersja tekstowa) albo przez pole plain_text w API. Jeśli tego nie zrobisz, nowy helper EmailPlainText wygeneruje ją z HTML.

Generator zachowuje akapity, listy, nagłówki, teksty alternatywne obrazów i linki (zapisane jako etykieta (https://…)). Pomija ukryte preheadery, piksele śledzące i style. Działa przed przepisaniem linków na potrzeby śledzenia, więc wersja tekstowa pokazuje prawdziwe adresy docelowe.

POST /api/v1/email/send
{
  "email": "jan@example.com",
  "subject": "Zamówienie wysłane",
  "content": "<p>Cześć [[fname]]…</p>",
  "plain_text": "Cześć [[fname]], Twoje zamówienie jest w drodze.",
  "tracking_enabled": false
}

Wypisanie jednym kliknięciem (RFC 8058)

Podpisane adresy wypisu przyjmują teraz POST z treścią List-Unsubscribe=One-Click, który od razu wypisuje subskrybenta. Wywołuje to zdarzenie SubscriberUnsubscribed (źródło one_click), więc Twoje automatyzacje i webhooki działają jak zwykle. Kampanie i autorespondery wysyłane do co najmniej jednej listy automatycznie dostają oba nagłówki:

List-Unsubscribe: <https://mail.example.com/unsubscribe/…podpis…>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Nagłówek List-Unsubscribe ustawiony przez Ciebie nadal ma pierwszeństwo. Aby wyłączyć automatyczne nagłówki, ustaw EMAIL_LIST_UNSUBSCRIBE=false.

Przełączniki śledzenia dla skrzynki i wiadomości

Możesz teraz wyłączyć śledzenie kliknięć i otwarć dla całej skrzynki albo dla pojedynczej wiadomości. Gdy śledzenie jest wyłączone, linki zostają dokładnie takie, jak je napisano, piksel nie jest dodawany, a SendGrid dostaje polecenie, żeby też nie śledził tej wiadomości. Przydaje się to przy mailach transakcyjnych, gdzie prywatność i dostarczalność są ważniejsze niż statystyki.

Agenci AI mogą konfigurować NetSendo

Szablony, maile i strony systemowe, reguły automatyzacji, formularze, harmonogramy wysyłki list, tagi, pola własne i webhooki mają teraz endpointy w API. Klient MCP (@netsendo/mcp-client@1.6.0) rejestruje 140 narzędzi zamiast 77. Twoje obecne klucze API nadal działają, bo nowe endpointy korzystają z istniejących uprawnień. Usunięcie rekordu z powiązanymi danymi zwraca 409, dopóki nie wyślesz confirm=true.

Lejki, które da się zbudować i na których można polegać

Lejki można teraz w całości budować, zmieniać i uruchamiać przez API, w tym dodawać kroki na ścieżkach yes/no warunku i zapisywać subskrybentów nowym endpointem POST /funnels/{id}/subscribers. Kroki testu A/B dają teraz każdemu wariantowi własną ścieżkę, a po wyłonieniu zwycięzcy nowi subskrybenci idą jego ścieżką.

Wykrywanie odpowiedzi

Aby je włączyć, podaj dane logowania IMAP skrzynki na odpowiedzi w Ustawienia → Skrzynki → Wykrywanie odpowiedzi. NetSendo sprawdza tę skrzynkę co pięć minut. Otwiera folder tylko do odczytu, więc nic nie zostaje oznaczone jako przeczytane, przeniesione ani usunięte. Pomija też autoodpowiedzi i wiadomości o nieobecności. Każda prawdziwa odpowiedź trafia do historii kontaktu w CRM, uruchamia automatyzację CRM: Kontakt odpowiedział i stosuje regułę punktacji Email Replied (domyślnie +25 punktów).

💼 Korzyści i przypadki użycia

🛒

E-commerce: lepsza dostarczalność do skrzynki odbiorczej

Sekwencje porzuconego koszyka i maile po zakupie wychodzą teraz z wersją tekstową i nagłówkami wypisania jednym kliknięciem, czyli z tym, co Gmail sprawdza w pierwszej kolejności. Wyłącz śledzenie dla potwierdzeń zamówień, żeby wyglądały jak zwykła osobista korespondencja.

🚀

SaaS: onboarding, który reaguje na odpowiedzi

Gdy użytkownik wersji próbnej odpowie na mail onboardingowy, wykrywanie odpowiedzi może utworzyć zadanie w CRM, powiadomić zespół customer success i podnieść lead score. Test A/B w lejku wysyła potem każdy wariant jego własną ścieżką follow-upów.

🏢

Agencje: konfiguracja klienta przez agentów AI

Podłącz Claude'a lub innego asystenta zgodnego z MCP i poproś go o utworzenie listy klienta, formularza, szablonów, automatyzacji powitalnej i lejka. Każdy klucz API widzi tylko swoje konto, więc dane klientów pozostają oddzielone.

🛠️ Aktualizacja krok po kroku

  1. Zrób kopię zapasową bazy danych

    Przejścia na MySQL 8.4 nie da się cofnąć, bo dane z 8.4 nie uruchomią się na 8.0. Najpierw zrób pełną kopię zapasową.

  2. Zaktualizuj usługę db

    Zmień obraz i command: jednocześnie. MySQL 8.4 nie uruchomi się ze starą flagą --default-authentication-plugin.

    db:
      image: mysql:8.4
      command: --mysql-native-password=ON --authentication-policy=mysql_native_password,,
  3. Popraw workera kolejki

    docker compose pull nie zmienia Twojego obecnego pliku docker-compose.yml. Zmień polecenie kolejki ręcznie, żeby potwierdzenia wypisu i powiadomienia o nowych subskrybentach były faktycznie wysyłane:

    queue:
      command: php artisan queue:work --queue=default,notifications
  4. Pobierz obrazy i uruchom ponownie
    docker compose pull && docker compose up -d

    Przy pierwszym starcie MySQL aktualizuje katalog danych, co chwilę trwa.

  5. Przejrzyj zmiany w działaniu

    Sprawdź aktywne lejki: od teraz wyzwalacze listy, formularza i tagu zapisują do nich nowych subskrybentów. Sprawdź też ustawienia CRON poszczególnych list, ustawienia nagłówków list i maile systemowe wyłączone dla list. Wszystkie te ustawienia są teraz egzekwowane.

⚠️ Ważne: Jeśli masz własną implementację MailProviderInterface, przed aktualizacją dodaj do metody send() nowe opcjonalne parametry ?string $textContent i ?bool $trackingEnabled.

🔧 Najważniejsze poprawki i zmiany platformy

  • ✅ Wysyłka SMS działa: każde zadanie SMS kończyło się błędem, bo wywoływało nieistniejącą metodę. Webhooki sms.sent i sms.failed też już działają.
  • ✅ Koniec z podwójnymi listenerami: 22 pary zdarzenie–listener były zarejestrowane dwa razy, co powodowało podwójne powiadomienia i podwójne punkty w lead scoringu. Reguły automatyzacji CRM nie uruchamiają się już dwa lub trzy razy na zdarzenie.
  • ✅ Silnik lejków: warunki lejków, akcje tagów, akcja wypisania, powiadomienia, kroki SMS, kroki czekaj do, przypomnienia oraz pauza i wznawianie działają teraz poprawnie.
  • ✅ Nieaktywni subskrybenci nie są już planowani jako odbiorcy ani liczeni w szacunkach odbiorców.
  • ✅ Izolacja kont: automatyzacje i ustawienia panelu nie mogą już wpływać na inne konta w tej samej instancji.
  • ✅ Bezpieczeństwo: czat Brain nie uruchamia już HTML z odpowiedzi (stored XSS), /docs/api wymaga logowania, a zaktualizowane zależności zamykają podatności, w tym krytyczną CVE-2026-44262.
  • ✅ Stos technologiczny: Laravel 13, Inertia 3, MySQL 8.4 LTS, Node 24 LTS, a do tego Dependabot i cotygodniowy workflow audytu zależności.

🎯 Porady ekspertów

1
Pisz wersję tekstową dla kluczowych kampanii

Wygenerowana wersja tekstowa jest dobra, ale krótki tekst napisany samodzielnie często lepiej wygląda w klientach tekstowych i powiadomieniach na smartwatchu.

2
Używaj osobnej skrzynki na odpowiedzi

Skieruj wykrywanie odpowiedzi na skrzynkę Reply-To, nie na skrzynkę zwrotów, i tam, gdzie dostawca na to pozwala, użyj hasła aplikacji IMAP z dostępem tylko do odczytu.

3
Ogranicz klucze agentów AI

Nadawaj kluczom MCP tylko potrzebne uprawnienia, na przykład lists:* albo funnels:*. Operacje destrukcyjne nadal wymagają confirm=true, ale ograniczone uprawnienia to Twoja pierwsza linia obrony.

4
Przetestuj wypis przez POST

Użyj curl -X POST -d 'List-Unsubscribe=One-Click' na adresie testowego subskrybenta. Odpowiedź powinna mieć kod 200, a ponowne wysłanie nie powinno niczego zmienić.

5
Wyczyść zaległe powiadomienia

Jeśli używasz QUEUE_CONNECTION=database, przed uruchomieniem nowego workera sprawdź stare zadania w kolejce notifications, żeby subskrybenci nie dostali lawiny dawnych maili.

🎉 Podsumowanie

v2.2.0 to jedno z największych wydań NetSendo. Twoje maile spełniają teraz wymagania Gmaila i Yahoo wobec nadawców, agenci AI mogą skonfigurować platformę za Ciebie, a lejki działają tak, jak pokazuje kreator. Ponieważ NetSendo działa na Twoim serwerze, dostajesz to wszystko bez limitów wysyłki i z pełną własnością danych.

Przeczytaj dokumentację, przejrzyj integracje albo pobierz NetSendo, żeby zacząć.

Gotowy na aktualizację?

Zrób kopię zapasową bazy, zaktualizuj docker-compose.yml i uruchom v2.2.0 jeszcze dziś.

#release#deliverability#one-click-unsubscribe#mcp#ai-agents#funnels#self-hosted
Udostępnij