PHPackages                             nimblephp/email - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. nimblephp/email

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

nimblephp/email
===============

Emails for NimblePHP

0.1.3(1mo ago)01.1k↓35.7%MITPHPPHP &gt;=8.2

Since Apr 28Pushed 1mo agoCompare

[ Source](https://github.com/NimbleMVC/Email)[ Packagist](https://packagist.org/packages/nimblephp/email)[ RSS](/packages/nimblephp-email/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (7)Used By (0)

NimblePHP - Email
=================

[](#nimblephp---email)

Pakiet dostarcza proste i elastyczne narzędzie do wysyłania wiadomości email w aplikacjach PHP. Biblioteka umożliwia łatwą konfigurację i obsługę różnych dostawców poczty elektronicznej, w tym Gmail, Outlook, SendGrid i innych.

**Dokumentacja** projektu dostępna jest pod linkiem:

Instalacja
----------

[](#instalacja)

```
composer require nimblephp/email
```

Funkcje
-------

[](#funkcje)

- Modułowa architektura z możliwością rozszerzania
- Obsługa różnych dostawców email (Gmail, Outlook, Yahoo, Zoho, SendGrid, Mailgun, Office365, Mailtrap, Amazon SES)
- Konfiguracja z wykorzystaniem zmiennych środowiskowych
- Obsługa HTML i załączników
- Wbudowane obrazki w treści HTML
- Wsparcie dla odbiorców CC i BCC
- Możliwość masowego dodawania odbiorców
- Obsługa szablonów emaili z podstawianiem zmiennych
- Załączniki tworzone z ciągów znaków (bez plików)
- Dodawanie niestandardowych nagłówków
- Obsługa TLS/SSL
- Wsparcie dla uwierzytelniania OAuth2 (wymagane dla Outlook/Office365)
- Konfigurowalne limity czasu połączeń
- Funkcje logowania
- Możliwość wymiany transportu (SMTP, PHP mail() i inne)
- Wsparcie dla wstrzykiwania zależności

Konfiguracja
------------

[](#konfiguracja)

Bibliotekę można skonfigurować za pomocą zmiennych środowiskowych:

```
# Podstawowa konfiguracja
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_USERNAME=user@example.com
EMAIL_PASSWORD=haslo
EMAIL_AUTH=true
EMAIL_SECURE=tls
EMAIL_FROM=nadawca@example.com
EMAIL_FROM_NAME="Nazwa Nadawcy"

# Lub użyj predefiniowanej konfiguracji
EMAIL_CONFIG=SENDGRID
EMAIL_USERNAME=apikey
EMAIL_PASSWORD=twoj_klucz_api

# Dla Outlook/Office365 (wymaga OAuth2)
EMAIL_CONFIG=OUTLOOK
EMAIL_USERNAME=twoj@outlook.com
EMAIL_OAUTH_TOKEN=twoj_token_oauth2

# Dla Amazon SES
EMAIL_CONFIG=AMAZON_SES
EMAIL_USERNAME=twoj_uzytkownik_ses
EMAIL_PASSWORD=twoj_klucz_ses
SES_ENDPOINT=email-smtp.us-east-1.amazonaws.com
```

Struktura biblioteki
--------------------

[](#struktura-biblioteki)

```
src/
├── Config/
│   └── EmailConfig.php
├── Transport/
│   ├── TransportInterface.php
│   ├── SmtpTransport.php
│   └── PhpMailTransport.php
├── Template/
│   └── TemplateProcessor.php
├── Exception/
│   └── EmailException.php
└── Email.php

```

Przykłady użycia
----------------

[](#przykłady-użycia)

### Podstawowe wysyłanie emaila

[](#podstawowe-wysyłanie-emaila)

```
use NimblePHP\Email\Email;

// Użycie domyślnej konfiguracji (z zmiennych środowiskowych)
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com', 'Jan Kowalski')
      ->subject('Ważna wiadomość')
      ->body('Treść wiadomości', false)
      ->send();
```

### Wysyłanie emaila HTML z załącznikiem

[](#wysyłanie-emaila-html-z-załącznikiem)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com', 'Jan Kowalski')
      ->subject('Ważna wiadomość')
      ->body('Witaj!To jest wiadomość HTML.', true)
      ->attachment('/sciezka/do/pliku.pdf', 'dokument.pdf')
      ->send();
```

### Dodawanie odbiorców CC i BCC

[](#dodawanie-odbiorców-cc-i-bcc)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Ważna wiadomość')
      ->body('Treść wiadomości')
      ->cc('kopia@example.com')
      ->bcc('ukryta-kopia@example.com')
      ->send();
```

### Masowe dodawanie odbiorców

[](#masowe-dodawanie-odbiorców)

```
$email = new Email();
$email->from('nadawca@example.com')
      ->subject('Ważna wiadomość grupowa')
      ->body('Treść wiadomości')
      ->addRecipients([
          'odbiorca1@example.com' => 'Jan Kowalski',
          'odbiorca2@example.com' => 'Anna Nowak',
          'odbiorca3@example.com'
      ])
      ->addCc([
          'kopia1@example.com' => 'Piotr Wiśniewski',
          'kopia2@example.com'
      ])
      ->send();
```

### Używanie szablonu emaila

[](#używanie-szablonu-emaila)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Witaj w naszym serwisie')
      ->template('/sciezka/do/szablonu.html', [
          'imie' => 'Jan',
          'data' => date('Y-m-d'),
          'link_aktywacyjny' => 'https://example.com/activate?token=123'
      ])
      ->send();
```

### Użycie szablonu jako ciąg znaków

[](#użycie-szablonu-jako-ciąg-znaków)

```
$templateContent = 'Witaj {{imie}}!Dziękujemy za rejestrację w dniu {{data}}.';

$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Witaj w naszym serwisie')
      ->templateFromString($templateContent, [
          'imie' => 'Jan',
          'data' => date('Y-m-d')
      ])
      ->send();
```

### Osadzanie obrazków w treści HTML

[](#osadzanie-obrazków-w-treści-html)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Wiadomość z obrazkiem')
      ->body('Witaj!Oto nasze logo:', true)
      ->embedImage('/sciezka/do/logo.png', 'logo')
      ->send();
```

### Załącznik z ciągu znaków

[](#załącznik-z-ciągu-znaków)

```
$pdf = generuj_pdf(); // Funkcja generująca zawartość PDF

$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Raport miesięczny')
      ->body('W załączniku znajduje się raport za bieżący miesiąc.')
      ->attachmentFromString($pdf, 'raport.pdf', 'application/pdf')
      ->send();
```

### Dodawanie niestandardowych nagłówków

[](#dodawanie-niestandardowych-nagłówków)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Ważna wiadomość')
      ->body('Treść wiadomości')
      ->addHeader('X-Priority', '1')
      ->addHeader('X-Mailer', 'NimblePHP')
      ->send();
```

### Używanie OAuth2 dla Outlook/Office365

[](#używanie-oauth2-dla-outlookoffice365)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('twoj@outlook.com', 'Twoje Imię')
      ->subject('Ważna wiadomość')
      ->body('Treść wiadomości')
      ->setOAuthToken('twoj_token_oauth2')
      ->send();
```

### Ustawianie limitów czasu

[](#ustawianie-limitów-czasu)

```
$email = new Email();
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Ważna wiadomość')
      ->body('Treść wiadomości')
      ->setConnectionTimeout(60)  // 60 sekund na nawiązanie połączenia
      ->setTimeout(120)          // 120 sekund na operacje
      ->send();
```

### Niestandardowa konfiguracja

[](#niestandardowa-konfiguracja)

```
use NimblePHP\Email\Email;
use NimblePHP\Email\Config\EmailConfig;

// Utworzenie własnej konfiguracji
$config = new EmailConfig();

// Ustawienie konfiguracji bezpośrednio
$config->setConfig([
    'host' => 'moj-serwer-smtp.com',
    'port' => 465,
    'username' => 'uzytkownik',
    'password' => 'haslo',
    'auth' => true,
    'secure' => 'ssl'
]);

$email = new Email($config);
$email->to('odbiorca@example.com')
      ->subject('Testowa wiadomość')
      ->body('To jest wiadomość testowa')
      ->send();
```

### Niestandardowy transport

[](#niestandardowy-transport)

```
use NimblePHP\Email\Email;
use NimblePHP\Email\Config\EmailConfig;
use NimblePHP\Email\Transport\SmtpTransport;

// Utworzenie własnej konfiguracji i transportu
$config = new EmailConfig();
$transport = new SmtpTransport($config);
$transport->setConnectionTimeout(60);

$email = new Email($config, $transport);
$email->to('odbiorca@example.com')
      ->subject('Wiadomość przez niestandardowy transport')
      ->body('Treść wiadomości')
      ->send();
```

### Niestandardowy procesor szablonów

[](#niestandardowy-procesor-szablonów)

```
use NimblePHP\Email\Email;
use NimblePHP\Email\Template\TemplateProcessor;

// Użycie z niestandardowym procesorem szablonów
$templateProcessor = new TemplateProcessor();
$templateProcessor->setPlaceholderFormat('${%s}'); // zmiana formatu placeholderów na ${nazwa}

$email = new Email(null, null, $templateProcessor);
$email->to('odbiorca@example.com')
      ->from('nadawca@example.com')
      ->subject('Niestandardowy format szablonu')
      ->templateFromString('Witaj ${imie}!', ['imie' => 'Jan'])
      ->send();
```

### Kompletny przykład użycia zaawansowanych funkcji

[](#kompletny-przykład-użycia-zaawansowanych-funkcji)

```
use NimblePHP\Email\Email;
use NimblePHP\Email\Config\EmailConfig;
use NimblePHP\Email\Transport\SmtpTransport;
use NimblePHP\Email\Template\TemplateProcessor;

// Pełna konfiguracja z wszystkimi komponentami
$config = new EmailConfig();
$config->setConfig([
    'host' => 'smtp.example.com',
    'port' => 587,
    'username' => 'user',
    'password' => 'pass',
    'auth' => true,
    'secure' => 'tls'
]);

$transport = new SmtpTransport($config);
$transport->setConnectionTimeout(30);
$transport->setTimeout(60);

$templateProcessor = new TemplateProcessor();

$email = new Email($config, $transport, $templateProcessor);
$email->to('odbiorca@example.com', 'Jan Kowalski')
      ->from('nadawca@example.com', 'System Powiadomień')
      ->addCc([
          'kopia1@example.com' => 'Osoba 1',
          'kopia2@example.com' => 'Osoba 2'
      ])
      ->addBcc(['ukryta-kopia@example.com'])
      ->subject('Raport miesięczny')
      ->addHeader('X-Priority', '1')
      ->templateFromString('Raport za {{miesiac}}Znajdziesz go w załączniku.', [
          'miesiac' => 'kwiecień 2025'
      ], true)
      ->attachment('/sciezka/do/raportu.pdf')
      ->embedImage('/sciezka/do/logo.png', 'logo_id')
      ->send();
```

Wsparcie dla dostawców poczty
-----------------------------

[](#wsparcie-dla-dostawców-poczty)

Biblioteka zapewnia predefiniowane konfiguracje dla popularnych dostawców poczty:

- Gmail (`EMAIL_CONFIG=GMAIL`)
- Outlook/Office365 (`EMAIL_CONFIG=OUTLOOK` lub `EMAIL_CONFIG=OFFICE365`)
- Yahoo (`EMAIL_CONFIG=YAHOO`)
- Zoho (`EMAIL_CONFIG=ZOHO`)
- SendGrid (`EMAIL_CONFIG=SENDGRID`)
- Mailgun (`EMAIL_CONFIG=MAILGUN`)
- Mailtrap (`EMAIL_CONFIG=MAILTRAP`) - do testowania
- Amazon SES (`EMAIL_CONFIG=AMAZON_SES`)

Rozszerzanie biblioteki
-----------------------

[](#rozszerzanie-biblioteki)

Biblioteka została zaprojektowana z myślą o łatwym rozszerzaniu:

1. **Dodawanie nowych transportów**:

    - Stwórz nową klasę implementującą `TransportInterface`
    - Przekaż ją do `Email` przez konstruktor lub metodę `setTransport()`
2. **Niestandardowe przetwarzanie szablonów**:

    - Rozszerz klasę `TemplateProcessor` lub utwórz własną implementację
    - Przekaż ją do `Email` przez konstruktor lub metodę `setTemplateProcessor()`
3. **Alternatywne źródła konfiguracji**:

    - Rozszerz klasę `EmailConfig` dla obsługi innych źródeł konfiguracji (np. plik JSON, baza danych)

Współtworzenie
--------------

[](#współtworzenie)

Zachęcamy do współtworzenia! Masz sugestie, znalazłeś błędy, chcesz pomóc w rozwoju? Otwórz issue lub prześlij pull request.

Pomoc
-----

[](#pomoc)

Wszelkie problemy oraz pytania należy zadawać przez zakładkę discussions w github pod linkiem:

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance88

Actively maintained with recent releases

Popularity19

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~108 days

Total

4

Last Release

59d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b71301619d71d2798d3a84f23de616ac1f1c185ab72e4f03e925cff169b03a0d?d=identicon)[krzysztofzylka](/maintainers/krzysztofzylka)

---

Top Contributors

[![krzysztofzylka](https://avatars.githubusercontent.com/u/41385342?v=4)](https://github.com/krzysztofzylka "krzysztofzylka (6 commits)")

### Embed Badge

![Health badge](/badges/nimblephp-email/health.svg)

```
[![Health](https://phpackages.com/badges/nimblephp-email/health.svg)](https://phpackages.com/packages/nimblephp-email)
```

###  Alternatives

[minishlink/web-push

Web Push library for PHP

1.9k12.0M53](/packages/minishlink-web-push)[laravel-notification-channels/twilio

Provides Twilio notification channel for Laravel

2587.7M12](/packages/laravel-notification-channels-twilio)[spatie/url-signer

Generate a url with an expiration date and signature to prevent unauthorized access

4422.3M16](/packages/spatie-url-signer)[mattketmo/email-checker

Throwaway email detection library

2742.0M5](/packages/mattketmo-email-checker)[laravel-notification-channels/discord

Laravel notification driver for Discord.

2371.3M11](/packages/laravel-notification-channels-discord)[eduardokum/laravel-mail-auto-embed

Library for embed images in emails automatically

1702.0M5](/packages/eduardokum-laravel-mail-auto-embed)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
