PHPMailer: nasze zmiany w projekcie open source
Klasyczna biblioteka PHP do wysyłania poczty, używana przez WordPressa i wiele innych systemów.
- Język
- PHP
- Gwiazdki na GitHubie
- 22 310
Zmiany przyjęte w PHPMailer
Polecenie QUIT nie trafia już do treści przerwanej wiadomości, długie nagłówki z adresami są zawijane, a podpisy S/MIME mają ujednolicone końce linii.
- Pull request #3362scalony 4 października 2026
- Pull request #3361scalony 4 października 2026
Fold long address headers
github.com/PHPMailer/PHPMailer/pull/3361 - Pull request #3358scalony 10 września 2026
Normalise line breaks in S/MIME signed messages
github.com/PHPMailer/PHPMailer/pull/3358
Jak sprawdziliśmy zmianę #3362
Nowy test testQuitDuringData otwiera połączenie, wysyła MAIL i RCPT, rozpoczyna DATA bez wysyłania treści, jakby wysyłka została przerwana, i wywołuje quit(). Test sprawdza w logu klienta, że QUIT nie został wysłany, oraz że połączenie jest zamknięte.
Błąd, poprawka i wniosek
Skrót naszego opisu z Nowinek technicznych: co nie działało, co zmieniliśmy i co z tego wynika dla naszej pracy.
QUIT stawał się linią wiadomości
Gdy wysyłka urwała się po komendzie DATA, a aplikacja zamykała połączenie przez quit(), serwer brał QUIT za treść maila i nie odpowiadał. Klient czekał do upływu limitu czasu.
quit() sprawdza stan połączenia
Klasa SMTP pamięta ostatnią wysłaną komendę, a quit() w stanie DATA tylko zamyka połączenie, bez wysyłania QUIT.
Protokół SMTP ma stany, a polecenie wysłane w złym stanie staje się treścią wiadomości.
Przy wysyłce poczty zawsze sprawdzamy, w jakim stanie jest połączenie, zanim je zamkniemy.
Inne projekty z naszymi zmianami: PHP
20 projektów w tej technologii ma nasze przyjęte zmiany. Pasek to gwiazdki repozytorium, obok liczba naszych zmian. Każdy wiersz prowadzi do strony projektu.
Pytania o nasze zmiany w PHPMailer
Skąd są te zmiany, kto je przyjął i czy poprawimy coś w Twojej bibliotece.
Czytaj dalej
Więcej o tej pracy i o pozostałych projektach z naszymi zmianami.
Używasz PHPMailer w swoim projekcie?
Jeśli coś w nim nie działa, poprawimy to u źródła i zostawimy obejście do czasu wydania. Odpiszemy w godzinę.