Changelog
Co nowego.
Każde ulepszenie platformy, jak to wysyła.
· EmailService
Dzień rozgrzewki nic nie zostało wysłane, nie liczy się
Dzień rozgrzewki był I 24 godziną od początku, czy to bez względu na to, czy nie. Wszystko poszło, więc przewrócenie rozgrzewki na dni przed pierwszą kampanią Po cichu spędził swoje dni o małej objętości. Dzień, który kończy się bez prób jest Teraz powtarzam: i każdego dnia przesuwa się do przodu przez całe dni, które Nieużywany, każdy numer na raz, podczas gdy dni, które były używane, zachowują swoje Okna i historia. Zakończenie porusza się z nimi, a stan rozgrzewki Raporty idleDaysSkipped. Uciekaj jest rozstrzygnięty, zanim ścieżka wysyłająca cokolwiek liczy, więc wysyłanie jest Nigdy nie liczył się z dniem, który ma się powtórzyć; i kiedy Liczniki nie mogą być odczytane, że bieg jest w lewo, gdy stoi, a nie zamyka się. Dzień na zerach.
· kamo-internal
Kampania, której zaplecze nie może wysłać, mówi dlaczego i jak go naprawić
EmailService wstrzymuje teraz kampanię, zamiast zawieść jej odbiorców Pojedynczo, gdy nie może go wysłać: to jest poza platformą przekaźnik Domena, lub w ogóle nie ma nadawcy. Odmawia wysyłania, harmonogramu i Wznowienie, gdy sprawa stoi, i informuje o kampanii jako Wyślij Blocker. - wydawca i widok postępu pokazują baner z przyczyną, Zgoda własnego serwera i poprawka jako dwa kroki: zmień od (lub Używaj dostawcy domyślnie) i CV, lub otwórz nadawca masowy Ustawienia i CV. Wznowienie pozostaje niepełnosprawne, gdy projekt jest nadal nieruchomy Ma przyczynę - Wznowienie teraz najpierw zapisuje projekt, więc skorygowany Z dotrze do Zaplecze zamiast wznowienia kampanii jako przechowywany i odrzucony Znowu - odmówiony wysłanie, harmonogram lub CV jest pokazany na miejscu z Komunikat serwera, nie tylko w toście, a kampania jest ponownie czytana Tak więc jego status i bloker są aktualne - sieć kampanii oznacza zablokowaną kampanię obok jej statusu, z Powód na węźle - błędy z kampanii API wolą przesłanie człowieka niż nagie Kod maszyny i noś status i kod
· kamo-internal
Rozgrzejne dni mówią, że dni bezczynności nie liczą się i rysuje daty, które się przesunęły
Dzień rozgrzewki, w którym nic nie jest wysyłane, nie liczy się: biegowe slajdy Przewiń i dzień powtarza się podczas wysyłania życiorysów, co powoduje zmianę Rozgrzewka przed pierwszą kampanią jest bezpieczna. Panel mówi teraz tak, obok Przełącznik i ponownie w bezczynności i nie rozpoczętych notatek. Kiedy dni zostały pominięte, pierścionek za dnia mówi, ile, z Harmonogram posuwał się do przodu przez tak wielu. Każdy plansz pokazuje swoją datę, I napisy na wykresie nazywają go, czytaj z każdego dnia, jak backend Teraz, zamiast liczyć od pierwszego, więc daty przesunięcia są Te narysowane. Na /marketing/e-mail, bezczynna rozgrzewka bez żadnych czekających napisów jako "on, Zaczyna się od następnej kampanii ", zamiast twierdzić, że dostawa jest Zaszły w rędzę.
· EmailService
Kampania, kampania, w której przekaźnik platformy odmówi natychmiast awarii, zamiast być ponownie wypróbowany
Przekaźnik wysyła tylko jako własną domenę i odpowiada na wszystko inne za pomocą 451, więc kampania, której od Skład jest na innej domenie używanej do ponownego rozpatrzenia każdego Odbiorca trzy razy, każdy spróbuj ponownie na rozgrzewkę, zanim ktokolwiek się nauczy To, od czego było złe. Kiedy dostawca orgi jest gospodarzem i portem przekaźnika A domena From nie jest domeną wysyłającą przekaźnika, odbiorca jest Teraz oznaczono FAILED z poprawką w błędzie: bez SMTP, bez ponownego próbowania, nie Tłumienie i nic nie liczyło się na rozgrzewkę lub jej szczelinę.
· EmailService
Nowa rozgrzewka gospodarza trzyma pocztę kampanijną org i uwalnia ją w tempie rozgrzewki
Podczas gdy rozgrzewka orgi jest włączona, dyspozytor zostawia swoje kampanie w spokoju A autor wysyła im jedną wiadomość na raz, najwcześniej należną po raz pierwszy W poprzek kampanii org, nigdy po przekroczce własnej kampanii godzinowej i Nigdy nie po rozgrzewce. Biegnie w każdej sekundzie pod Własna dzierżawa dyspozytora, więc obaj nigdy nie mogą wysłać tego samego odbiorcy od Różne kapsuły. Ustawienia, rozstrzygnięte dni i hamulec bezpieczeństwa żyją w masowych dostawcach Zaszyfrowana blob; liczniki żyją w Redis i są odbudowane z wierszy odbiorców Jeśli przegrasz. GET, PUT i reset punktów końcowych w /api/email/bulk-provider/warmup Zgłoś stan, harmonogram, kolejkę i zdrowie. Obie ścieżki wysyłają teraz przez jedną metodę na odbiorcę, która twierdzi, że Wypisz go wiosłuj, zanim przekaźnik to zobaczy. Liczniki kampanii są pisane Bez zapisywania kampanii, w tym przerwane zamiatanie; oszczędność Kiedyś kampania zatrzymała się w połowie partii z powrotem do SENDING.
· kamo-internal
Proje rzędy niosą ze sobą kontakt, a już wysłane rzędy utrzymują swój znak obok statusu
Odbiorca EmailService DTO informuje teraz, czy kampania już ma Wysłałem e-mail każdy adres. Mapper przenosi go razem, wraz z Ostatni błąd i wypełnia kampanię, którą DTO opuści. Już się toczyły sprzężony wiersz nigdy nie jest trzymany przez rozgrzewkę i nigdy nie jest wysyłany e-mailem Ponownie, więc sieć postępu nie daje już jej listu rozgrzewczego i kiedy Ostatnim wynikiem jest wszystko, ale Wysłany chip statusowy utrzymuje się na małym Znak "już wysłany". W kroku odbiorcy, wiersz oznaczony "Już już wysłany" Pokazuje również, jak to się skończyło, gdy nie po prostu zniknie.
· kamo-internal
Kampania From field mówi, kiedy sztafeta masowa odmówi jej
Własne pole kampanii, niewykonane przez dostawcę masowego, ostrzega gdy adres jest poza domeną dostawcy, jako poczta, która może wylądować w Spał. Na platformie przekaźnikowej nie jest to ryzyko, ale pewność: EmailService nie udaje każdemu odbiorcy kampanii, której domena nie jest Domena wysyłania przekaźnika ("Przekaźnik masowy wysyła tylko jako domenę"). Więc kiedy dostawca masowy przenosi przekaźnik platformy, poza domeną Od jest Błąd: pole jest oznaczone, alert mówi, co się stanie i oferuje dostawca domyślnie, gdy znajduje się to w domenie przekaźnika, i preflight Bloki wysyłają, dopóki nie zostaną naprawione. Organizacje na własnym SMTP Dostawca nadal otrzymuje ostrzeżenie przed spamem.
· EmailService
Każda wiadomość z kampanii nazywa swój wiersz odbiorcy w X-Kamo-Ref
Przekaźnik luzem rejestruje nagłówek na jego kolejce i odziera go przed Dostawa, dzięki czemu wyniki dostawy mogą być dopasowane do dokładnego rzędu odbiorcy. Testy kompozytora przypinają również resztę tego, co pozostawia przekaz kampanii Z: kampania Od adresu i nazwy, z których każdy wraca do masy dostawca; nazwa wyświetlacza, która nie może samodzielnie uruchomić nagłówka; Niesubskrybuj skrzynki pocztowej na domenę, z której faktycznie pochodzi poczta; i a Odpowiedz tylko wtedy, gdy kampania go utworni.
· EmailService
Raporty o dostawach przekaźników odbijają się, blokują i liczą pocztę kampanijną po przekazaniu
POST - przyjmuje raporty przekaźnika platformy O tym, co stało się z każdą wiadomością, dopasowane do wiersza odbiorcy przez Nagłówek X-Kamo-Ref lub, w przeciwnym razie, ostatni wiersz wysłany na adres - Ostatnie siedem dni. Odbicie twarde (5.1.x, 5.2.1, 5.4.4) oznacza wiersz BOUNCED i tłumi Adres. Blok (5.7.x) oznacza to FAILED, ale zachowuje adres, ponieważ Odmowa była odprawą nadawcy, a nie skrzynki pocztowej. Wszystko inne trwałe jest Po prostu porażka. Powód odrośli jest przechowywany w wierszu do czasu dostawy. Tylko rzędy nadal SENT są przenoszone, a rozgrzewka liczy każdy raport raz, W stosunku do dnia, w którym wiadomość została wysłana, aby reporter mógł ponownie wyślić partię Bezpiecznie.
· EmailService
Harmonogram rozgrzewki, zasady dotyczące zdrowia i rozgrzewki
Nowy wysyłający adres IP jest zwiększany przez czternaście dni rozgrzewek. Dni 1-7 podążaj za ustalony harmonogram na tempo (konserwatywny, zrównoważony, agresywny); od dnia 8 Każdy dzień rośnie w tempie tylko wtedy, gdy dzień wcześniej był zdrowy. Dzięki odbiciu, zablokuj i odroczeniu stawek, a w przeciwnym razie utrzymają się. Każdy dzień jest Zdecydował raz i został zatrzymany z powodu. Wiadomości są rozciągnięte od tego, co pozostało z dnia, z wrednym jitterem i sporadyczna przerwa, nigdy szybciej niż cztery razy w stosunku do stałej stawki i Nigdy nie spóźnić się, aby reszta dziennego budżetu nie pasowała już. A w tym w tym, poty o., w tym, że w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym Hamulec zabezpieczający zatrzymuje się na dzień, w którym odbiorniki blokują lub odbijają.
· kamo-internal
Rozgrzejny sztandar chodnik na /marketing/email
Podczas gdy nowa rozgrzewka gospodarza idzie, kampanie wychodzą znacznie wolniej Nie mówią ich własne ustawienia i nic w kampanii nie mówi, dlaczego. W tym, że Kampanie na przestrzeni roboczej i widok postępu kampanii mają teraz szczupłą Baner z dniem, dzisiejszy wysła na czapkę, następny send i Co czeka, łącząc się z ustawieniami rozgrzewki i kolejkowany odbiorca Wyjaśnia, że jest przetrzymywany. Baner jest ukryty, gdy rozgrzewka jest wyłączony lub kompletny, i za każdym razem, gdy Nie można odczytać rozgrzewki.
· kamo-internal
Wpisowany klient nadawcy masowego z błędami w polu i rozgrzewanymi punktami końcowymi
Klient znał status dostawcy o nazwie PENDING, że backend nigdy Wysyła, więc nadawca, który został uratowany, ale jeszcze nie przetestowany, upadł do "Nie Konfigurowany". Teraz czyta PENDING_SETUP (nadal akceptując PENDING) i Normalizuje cały stan w jednym miejscu: podsumowanie połączenia, gdy Po raz ostatni zmieniono hasło, przekaźnik platformy i to, czy członek może Zarządzaj tym. Awarie powracają jako BulkEmailApiBraż, niosący stan HTTP i, dla: 400, pole formularza backendu o nazwie, dzięki czemu formularz może umieścić wiadomość Na tym polu i 403 można pokazać jako stan dostępu, a nie Błąd. Puste 204 są tolerowane, a oszczędzanie lub rozgrzewka pisze, że odpowiedzi Z nagim uznaniem następuje GET zamiast być adoptowanym Jak państwo, które jest tym, co wyczyściło formę po każdym zbawieniu. Dodaje połączenia rozgrzewcze: GET i PUT / Bulk-provider/warmup i POST /bulk-provider/warmup/reset.
· kamo-internal
Reguła połączeń, presety i model rozgrzewki za masowym nadawcę
Czyste elementy, na których zbudowane są nowe ekrany, każdy z testami: - reguła połączenia portowego zaplecza, odzwierciedlona, tak że formularz może powiedzieć Jak KamoCRM połączy się, zanim cokolwiek zostanie zapisane: 465 jest ukryte TLS Z log-in, 587 to STARTTLS z logowaniem, niezależnie od tego, co mówi bezpieczeństwo, Inne port z ulepszeniami STARTTLS i znakami, a wszystko inne jest Tekst zwykły bez logowania - presety jednego kliknięcia dla przekaźnika platformy i wspólnych dostawców - forma jako wartość: co jest brudne, oszczędzaj ciało i walidację, które Prosi tylko o nazwę użytkownika i hasło, gdy połączenie się podpisze - gotowość konfiguracji i etapy testu wysyłane - rampę rozgrzewczą, odliczanie, wysyłanie liczb wykresów rytmu i harmonogramu useBulkWarmup sprawdza rozgrzewkę co 15 sekund, gdy zakładka jest widoczna, pauzuje, gdy jest ukryty, zatrzymuje się na 403 i stosuje zapisy Optymalnie z powrotem.
· kamo-internal
Przebudowana karta nadawcy masowego z nowym panelem rozgrzewek hosta
Zakładka Bulk Email Sender jest przebudowana z jednej długiej formy na zestaw Karty nad szkicem stanu zapisanego: - maszt ze statusem na żywo (ratowany, ale niesprawdzony nadawca teraz czyta "Potrzebuje testu"), kogo wysyła jako, przechowywane połączenie w jednej linii i Kiedy był ostatnio testowany - czterostopniowa szyna gotowości: połączenie, nadawca, test, rozgrzewka - połączenie, z presetami, a None / STARTTLS / SSL-TLS control, a Sugerowanie, gdy jest napisany znany port, i relacja na żywo o tym, jak KamoCRM faktycznie połączy się, ostrzegając, gdy port zastąpi Wybrane bezpieczeństwo - logowanie, które jest interaktywne tylko wtedy, gdy połączenie się podpisuje, a Hasło, które mówi, czy ktoś jest zapisany i kiedy, z Zamień i Usuń inscenizowane, aż do momentu zapisania - tożsamość nadawcy z podglądem skrzynki odbiorczej, ostrzeżenie, gdy platforma Przekaźnik odmówi z domeny - lepki pasek zapisu, błędy z backendu umieszczonego na ich polu, oraz Uratowany stan zabrany z własnej odpowiedzi ratunkowej - test inline wysyła, który rysuje, do którego dotarła wiadomość, zaznaczając: Etap, który odmówił Panel New Host Warm Up znajduje się poniżej: on/off, tempo, obecny dzień jako Pierścień czternastu segmentów, dzisiejszy listwa wysyła na czapkę z żywym Odliczanie do następnego send, sumy, zdrowie dostaw i ile z nich Raporty przekaźnikowe, 14-dniowy harmonogram z decyzją każdego dnia i limitem W porównaniu z rzeczywistym wykresem, dzisiejsze wysyłanie godzin i nierówne przerwy między Ostatnie wysyła, kolejkę, hamulec bezpieczeństwa z Resume teraz i Reset. Członek bez prawa do zmiany nadawcy otrzymuje tylko kartę, a Odmowa odczytu otrzymuje stan dostępu, a nie błąd.
· EmailService
Kampania nie może być wysłana ani zaplanowana bez masowego nadawcy poczty e-mail
Dyspozytor zaakceptował taką kampanię, a następnie pomiń ją na każdym z nich. tick, pozostawiając go w SENDING z niczym poza linią dziennika. Wyślij teraz i Harmonogram teraz odrzuć go komunikatem, gdzie ustawić nadawcę. Wystarczy skonfigurowany host i port; nie trzeba było zweryfikować.
· EmailService
Ustawienia dostawcy api odpowiada z zapisanym stanem i nazywa pole, które odrzuca
PUT zwraca teraz pełny stan ustawień zamiast „sukcesu: true”, który Wyczyścił formularz po każdym zbawieniu. Pola są sprawdzane po stronie serwera i Odmówiono 400 „erromu, pole”; login jest wymagany tylko wtedy, gdy połączenie W rzeczywistości się zalogują. Psowe hasło utrzymuje zapisany, czytelne hasło Usuwa go, a passwordUpdatedAt rekordy, gdy został ustawiony. Status idzie Z powrotem do PENDING_SETUP tylko wtedy, gdy zmieni się pole związane z dostawą. Każdy napis do zaszyfrowanej blob przechodzi teraz przez jeden zablokowany read-modify-write, który utrzymuje klucze, których nie posiada, ponieważ plama to Przejechaj również rozgrzewkę. Stan pokazuje, jak będzie EmailService Połącz się, a org platformy jest wyświetlany w ustawieniach wewnętrznego przekaźnika. Wysłanie testu mówi, gdzie się nie udało (łączy, TLS, login, nadawca, Odbiorca, dane) z krótką poprawką dla każdego.
· kamo-internal
Podgląd wiadomości e-mail w razie wysłania, niestandardowa / bez odbiorcy szablonu i prawdziwy Z pola
Podgląd: okno dialogowe, które renderuje własną kompilencję redaktoraCiałoHtml() - Ciąg Zapisz sklepy i dyspozytor wysyła - więc nagłówek publiczności, Podpis i stopka oraz stopa zgodności są tam i nie może Odpłyny od prawdziwego e-maila. Widoki stacjonarne i mobilne, "doskonikuj jak" Odbiorca lub próbka, scalanie tokenów wypełniło sposób, w jaki EmailService je wypełnia, Koperta w stylu skrzynki odbiorczej i rama piaskownicy. Dotrze do zasięgu komponowanego krok, bar dla stóp i widok na postęp kampanii. Publiczność: "Custom / No Template" nie owija nic wokół ciała. Jest ona uratowana Zakres FIRMA z podpisemKłap NIE TYP (który serwer przechowuje i nigdy Czyta jest lekturą), a kampania grid określa go jako niestandardowy. Od: własnych Z nazwy i pól adresowych, niewykonane z masowej wiadomości e-mail Dostawca i edytowalny na kampanię, z resetem domyślnym i ostrzeżeniem Gdy adres jest poza domeną dostawcy. To zastępuje nadawcę Wywodzi się z widowni i radia bez odpowiedzi. Odbiorcy: adresy kampanii, które już wysłała e-mail, są oznaczone "Już Wysłano" z powiadomieniem, że nigdy więcej nie zostaną przez niego wysłane e-mailem; EmailService Teraz informuje o tym na odbiorcę.
· KlusterServices
Sign hello.kamorm.com z własnym kluczem klienta, według samej domeny
Kampania wysyłamy jako hello.kamorm.com poprzez postfix-bulk. Dostaje swoje Własny klucz DKIM (entor wyboru, opublikowany jako customer._domainkey.hello), i use_esld - false, więc wiadomość hello.kamocrm.com jest podpisany de-hello Zamiast wrócić do klucza pocztowego rodzica, który zawodzi ścisły Dostosowanie DKIM (adkim) publikuje domena.
· KlusterServices
Postfix-bulk, drugi przekaźnik wylotowy dla poczty kampanii, z wynikami dostawy z powrotem
Kampania wysyła teraz przez własny przekaźnik na k3m1 (egress 47.181.8.87) Jak hello.kamorm.com, więc skargi na pocztę masową nigdy nie dotykają Reputacja mail.kamocrm.com (47.181.8.84). - Przekaźnik zwykły na porcie 25 dla usługi e-mail (NetworkPolicy); it Akceptuje tylko nadawców ?hello.kamorm.com i odrzuca wszystko inne z 4xx, nigdy 5xx, ponieważ dyspozytor kampanii tłumi na dowolnym 5xx. - Strażnik wychodzący trzyma dostawę wychodzącą, chyba że adres publiczny kapsuły Jest to 47.181.8.87, więc masa nigdy nie może spokojnie odejść jako kolejne IP. - Wagon zbiorczy czyta dziennik poczty i informuje o każdej kampanii wiadomość dostarczona / odroczona / odbiła / wygasła wynik do EmailService, Dołączony do nagłówka X-Kamo-Ref, który jest rozbierany przed dostawą. Stosowany na razie ręcznie: wdrożenie-services.yml stosuje pocztę / pliki po nazwie I nie wymienia ich jeszcze.
· EmailService
Kampania wysyła e-maile na adres najwyżej raz, kiedykolwiek
Adresy są dopasowane przycięte i niewrażliwe, a także w rzędzie kampanii Przekaźnik przekazał przekaźnik (wysłane, w locie, odbite, nieudane lub ponownie wypróbowane) jest teraz Niezaliczyła jego stałego zapisu tego adresu: nigdy nie usuwana, resetowana ani ponownie zamykana. - materializujOdbiorcy używane do usuwania każdego wiersza i przebudowy listy na każdym z nich Zaoszczędź, więc edycja wstrzymanej kampanii umieściła już adresy e-mail z powrotem w Kolejka. Teraz prowadzi historię, odświeża rzędy, z którymi jeszcze się nie kontaktuje, Usuwa tylko nieskontaktowane wiersze, które opuściły listę, i nigdy nie dodawały ponownie Adres, z którym skontaktowano się kampania, jednak wiele razy jest dodawana. - Dyspozytor twierdzi, że sprzęgł, zanim przekaźnik to zobaczy. Katastrofa Pomiędzy przekaźnikiem akceptującym wiadomość a wierszem oznaczonym SENTED użyto do Zostaw go w QUEUED i wyślij go ponownie; teraz pozostaje wydzierający, a zamiatanie się kończy To jest tak samo jak FAILED bez prób. - Odbiorca dodany, gdy kampania została wstrzymana, nigdy nie dostał czasu wydania, więc Nigdy nie został wysłany, a kampania nigdy się nie skończyła. Czasy uwolnienia idą teraz Każdy kij w kolejce, którego brakuje. - Unikalny indeks startowy na (campaign_id, niższy(e-mail)) cofa regułę Przy stole. Punkt końcowy odbiorcy zwraca teraz nazwę każdego wiersza, wartości scalania, źródło I czy skontaktowano się z nim, więc ponowne otwarcie i ponowne oszczędzenie projektu nie Wymazuje personalizację. Od adresu wraca do dostawcy masek, I od nazwy jest faktycznie wysłane (została przechowywana i upuszczona).
· kamo-internal
NoReply Outbound, audyt poczty tylko boski wysłany jako adres NoReply
Trzecia sekcja w ramach Mail, pokazana tylko członkom, która kwalifikuje się do Boga, otwiera /messages/outbound/noreply: każda wiadomość EmailService przekazana do Przekaźnik jako platforma NoReply adres, najnowszy pierwszy, z wyszukiwaniem, a Filtr Sent/Failed i szuflada pokazująca pełną wiadomość. Strona odwraca każdego, kto nie jest niekwalifikujący się do Boga. To jest uprzejma, Nie blokada: dane pochodzą z poczty e-mailService, która odrzuca dowolną sesję Bez GD.
· EmailService
kiełka każdej wiadomości wysłanej jako platforma NoReply adres, czytelna tylko przez Boga
Nagrane w EmailSmtpService w jednym miejscu wysyłasz do przekaźnika, oraz Wychodząc na podstawie adresu, więc szablony transakcyjne, kampanie i Wszystkie akcje są objęte bez zgody. Odmowy są rejestrowane Z powodu przekaźnika i wciąż odwrócony. Pisanie biegnie we własnym Transakcja i nigdy nie rzuca: nieudany wiersz audytu nie może upaść ani cofać się Wyślij. GET /api/email/noreply-outbound list prowadzi do księgi (szukaj, filtr statusu, Poszukiwanie, ciała wykluczone); /-id zwraca jedną wiadomość z ciałem. Oba Wymagaj GD na sesji i nic więcej: kiesza obejmuje każdy Organizacja, więc żadna lub g-scoped prawo może ją otworzyć. Tabela jest tworzona na starcie przez NoReplyOutboundSchema, jako Jest to ćwierćda artykułów i części udziałów.
· kamo-internal
Link do śledzenia może wylądować na biało-labelckich opłatach CRM
Dodaje - do miejsc docelowych, na których oferuje picker śledzący-link /marketing/śledzenie, z własną ikoną. Ścieżka jest wolna od miejsc, jak jej rodzeństwo: Strona marketingowa 308 spływa do "i trzyma "zniżkę" w całym świecie hop, tak samo jak / cen (zaznaczone na stronie na żywo). Etykieta wiersza i wskazówka są w Kamo-translation-dictionary 7a6fd4e2.
· kamo-marketing
Pozwól czytelnikowi wysłać artykuł o opłatie za miejsce do kogoś, kogo zna
Forma "przekaż to na" u podnóża - dotarcie Z chipa na górze i linii po siedmiu pytaniach. Nazwiska czytelników Do trzech osób i wysyłamy każdy z nich raz, z tym Imię czytelnika na nim; mogą również otwierać je we własnym kliencie pocztowym lub kopiować Zamiast tego link. POST /api/share-article bramy przed e-mailUS to widzi: ten sam oryginalny Tylko, a - zweryfikowana strona serwera przeciwko usłudze "" (druga Formularze tutaj do przodu ładowność bez sprawdzania go przez nikogo) i wyślij samozwańcz Tylko dla odwiedzających UE / EOG, Wielką Brytanię i Szwajcarię. To do przoduje w ciele zbudowany z ograniczonych pól, z adresem odwiedzającego, który rejestruje nasz wnikar, Do EmailService /api/Internal/article-share, który egzekwuje limity I lista rezygnacji z platformy org. Wdrożenie odczytuje INTERNAL_AUTH_SECRET z istniejącego mlos-internal-auth Tajny (opcjonalnie, więc strona nadal zaczyna się bez niej) i zyskuje EMAIL_SERVICE_URL i CAPCHA_SERVICE_URL.
· EmailService
Wyślij artykuł do kogoś, jako platforma org, z pracą opt-out
Odwiedzający na stronie marketingowej może wysłać artykuł o zasiłku do trzech Ludzie. POST /api/internal/article-share (X-Internal-Auth, jak każdy inny /api/wewnętrzny punkt końcowy) wysyła każdy z nich po jednym e-mailu jako najwyższy poziom Organizacja, od "'sender> via KamoCRM' z ReplyDo nadawcy. Ponowne wykorzystanie tego, co istnieje, zamiast dodawać jego drugą kopię: - Opt-outs na żywo w email_suppressions, w kluczu do id platformy org, więc Rezygnacja tutaj nigdy nie dotyka listy hostowanych org i listy org nigdy Zablokowuje to. Link jest podpisanym tokenem (orgId|email, HMAC), który Istniejący UnsubscribeController i strona teraz akceptują wraz z kampanią Tokeny, z tym samymi RFC 8058 List-Unsubscribe headers wysyłają kampanie. - Dostawa przechodzi przez , które zyskuje DeliveryOptions (nazwa wyświetlacza i dodatkowe nagłówki) więc From, decyzja SPF A pobyt w sztafecie zadecydował w jednym miejscu. List zbudowany przez dzwonionego Nie ma wiersza szablonu, więc licznik użycia jest pomijany. Granice, liczone z zamglonej księgi - Stworzony przy starcie), więc każda kapsuła zgadza się: trzy osoby na żądanie, wstępnie Tylko notatki, 10 dziennie na nadawcę i na adres dla gości, 500 dziennie, Pojedynczy adres na adres co 90 dni, nigdy nie do stłumionego adresu. Ustaw również mas-email.unsubscribe-base-url w prod configmap. Kod Domyślne jest puste, co wysyła pocztę kampanijną bez jej linku do wypisania.
· kamo-marketing
Umieść każdą stronę w /sitemap.xml i listy stron tylko w językach, które mają
/sitemap.xml był indeksem, więc otwarcie wykazało 79 nazw plików, a nie Strony strony. - /sitemap.xml jest teraz jednym z nich z każdym adresem: 18,700 z nich, każda w Jego angielski adres, z każdą wersją językową, w której istnieje jako Hreflang naprzemiennie. To jest w ramach limitu protokołu 50-URL / 50 MB W przypadku pojedynczego pliku; obok niego plik jest odrzucany w całości. Wpisy do dziennika zmian Wchodzi bez ich zastępów, co umieściłoby plik w pobliżu 60 MB. Każdy z nas Strona wpisu deklaruje swoje języki. - Pliki w jednym języku, gdzie każda wersja językowa jest własnym adresem URL, Przejście na /sitemap-index.xml. robots.txt nazywa się oba pliki. - Strona, której kopia posiada własną przestrzeń nazw wiadomości, jest na liście, i nazwy Naprzemiennie, tylko w miejscowościach, że przestrzeń miana jest naprawdę tłumaczona na: Co najmniej 90% jego ciągów, mniej niż 30% identyczne z Angielski (app/lib/message-locales.ts). Nowy Artykuł i /zasoby nie mają Jeszcze jeszcze tłumaczenia. Były we wszystkich 21 lokalizacjach, z czego 20 na angielskiej stronie Pod innym prefiksem. - Strony z kolekcji czytają ten sam środek na żywo dla "kolekcji" w miejsce Dźwieńcza kolekcja twardo-CONTENT_LOCALES. Kopia kolekcji Swahili ma Został przetłumaczony od czasu napisania tej listy, więc 132 prawdziwe strony Swahili Wyznaczywali swoje kanoniczne na angielski.
· kamo-internal
Departament Select sprawdza członków, którzy pokazują
Wybór katalogu używany do przełączania całej listy w tryb wyboru z niczym Sprawdzone i przeczytaj "Zrobione" aż do naciśnięcia ponownie. Teraz sprawdza każdego członka, którym jest dział Pokazywanie (wyszukiwarka i pasek All / Online / Online / Offline decyduje kto) i odpuszcza każdego sprawdzonego - Na zewnątrz. Zawsze czyta Select i jest wyłączony dla tego działu sam podczas wyboru Jest to dokładnie te wiersze; odznawanie jednego, sprawdzanie kogoś w innym miejscu lub filtr, który pokazuje inaczej W rzędzie przynoszą go z powrotem. Własny rząd widza jest pominięty: czat grupowy lub spotkanie, które zaczynają, i tak zawiera je i Spotkanie w przeciwnym razie wysłałoby im zaproszenie do czatu. Niepełnosprawny z arii-disabled, aby użytkownik klawiatury utrzymał ostrość wewnątrz pułapki panelu i przyciemnił się Nieprzezroczystość, ponieważ kolor .operator-label jest !ważny pod "ważnym" tailwind "ważne: true".
· kamo-marketing
Ogłoszenie o usługach publicznych na temat osób, które utrzymują opłaty za miejsce w oprogramowaniu
Nowa strona w - wyjaśniając, dla nietechnicznych Właściciele, jak działają odsprzedane platformy z etykietami białej: licencja na agencję zbiorową, na siedzenie Opłaty, które agencja przechowuje, i mierzone wykorzystanie na najwyższym poziomie. Kończy się pytaniami Zapytanie przed podpisaniem i czym różni się KamoCRM. Wyrenderowany na serwerze artykuł z artykułem i BreadcrumbList JSON-LD, własny OG Karta, kalkulator opłat za miejsce i CTA do bezpłatnej rejestracji, demonstracji, kontaktu i telefonu. Powiązany z menu Zasobów i hubu, od banera witryny jako PSA do Po lewej stronie dziennika zmian i wymienione w mapie strony.
· kamo-marketing
Wymień każdą stronę w każdym języku, w którym istnieje, i ujm każdą stronę
/sitemap.xml wymienił każdą stronę raz, jako jej angielski adres URL. 17 843 changelog Wpisy nie miały żadnych zmian językowych, a każdy hreflang każdej strony o nazwie Wszystkie 21 miejsc, niezależnie od tego, czy strona w nich istniała, czy nie. - Każda wersja językowa jest teraz własną wersją, noszącą pełną stronę, Rezystancyjne klaster hreflang i x-default: zalecana forma Google, oraz Ten, który dostaje zlokalizowaną stronę bez czekania na gąsienicę Poszukuje do niego alternatywnego linku. - Wersja jest wymieniona tylko tam, gdzie jest ona własną kanoniczną: SITE_LOCALES dla strony odręcznie napisane, posty na blogu i strony listy changelog; COLLECTION_CONTENT_LOCALES dla porównań, rozwiązań, integracji i Słownik; oraz dla artykułów KB i wpisów na stronie Changelog, locales KBService Usługi Security zgłaszają prawdziwe tłumaczenie. Echo angielskiego - Nie liczy się. Wystawienie wersji, która zawiera kanony na język angielski, przesyła adres URL Nie można tego indeksować. - Nazwy każdej strony "head" są dokładnie takie same. localeAlternates() przyjmuje Lokale miejsc, w których znajduje się strona, a miejscowa poza nimi kanoniczne dla języka angielskiego Bez nosa. Strony kolekcji w lokalizacjach bez kopii kolekcji używanej do Nie bądź nominowany, podczas gdy każda inna strona nadal nazywa je alternatywnymi. - Indeks jest podzielony według sekcji (strony, kolekcje, każda sekcja KB, Changelog list stron, wpisy na stronie changelogu), każdy plik z najnowszym lastmodem I dobrze wewnątrz limitów 50 000-URL / 50 MB. Pliki Changelog uruchamiają najstarsze Po pierwsze, więc pełny plik nigdy więcej się nie zmienia. - Strony listy Changelog 2..N są wymienione; każdy z nich jest własnym kanonicznym. - /sitemap.json to jeden streamowany dokument trzymający każdą stronę i każdą Język URL. /api/mapa ta służy temu samemu dokumentowi. - źródło, które nie może być odczytane odpowiedzi 503 zamiast częściowej mapy witryny.
· KBService
Powiedz, który lokalnie dotyczy każdego publicznego artykułu, jest naprawdę tłumaczone na
Mapa strony marketingowej zawiera teraz listę każdej wersji językowej Pomocnik, dokumentacja i artykuł o wyszukiwarce API oraz każda strona artykułu Nazwiska innych jako ich hreflang na przemian. Żaden z nich nie mógł odróżnić tłumaczenia Z echa: TranslateService odpowiada na instrukcje, dla którego nie ma dostawcy Angielskie źródło, więc sw and ta rows powtarzają angielski tytuł i ciało Słowo w słowo (mierzono 2026-09-11). Nazwanie tych wskazyłoby wyszukiwarki Na stronach, które kanoniczne są z powrotem do angielskiego. Węzły do drzew i pojedyncze czytania niosą teraz "locales": miejscowe, których tytuł lub tytuł Ciało różni się od artykułu angielskiego. Samo ciało wystarczy - arabski Wiersz może zachować tytuł angielskiego nad przetłumaczonym ciałem. Komputerowy w jednym zapytaniu na żądanie przez KbTranslatedLocalesService, który odczytuje za pośrednictwem EntityManager więc nie jest potrzebne wspólne wydanie biblioteki.

Twój wszechświat czeka.
Rozpocznij bezpłatnie w kilka minut.Dodaj produkty, kiedy tylko będziesz gotowy — bez migracji, bez nowych logowań.
Bezpłatne na zawsze — nie wymaga karty kredytowej