# SDK a knihovny

> Oficiální knihovny Emailitu pro Node.js, PHP, Laravel, Python, Ruby, Go, Javu, .NET a Rust, balíček MCP a volání API přes obyčejné HTTP.

Emailit spravuje open-source klientské knihovny pro devět jazyků a frameworků. Každá obaluje REST API, má typované chyby a používá stejné názvy zdrojů, jaké vidíte v [referenci API](/cs/docs/api-reference/). Pokud váš jazyk v seznamu není, poslouží jakýkoli HTTP klient.

## Oficiální knihovny

Všechny knihovny mají licenci MIT a publikujeme je z [github.com/emailit](https://github.com/emailit).

| Jazyk | Balíček | Instalace | Požadavky | Zdrojový kód |
| --- | --- | --- | --- | --- |
| Node.js | `@emailit/node` | `npm install @emailit/node` | Node.js 18+ | [emailit-node](https://github.com/emailit/emailit-node) |
| PHP | `emailit/emailit-php` | `composer require emailit/emailit-php` | PHP 8.1+ | [emailit-php](https://github.com/emailit/emailit-php) |
| Laravel | `emailit/emailit-laravel` | `composer require emailit/emailit-laravel` | Laravel 10, 11 nebo 12 | [emailit-laravel](https://github.com/emailit/emailit-laravel) |
| Python | `emailit` | `pip install emailit` | Python 3.7+ | [emailit-python](https://github.com/emailit/emailit-python) |
| Ruby | `emailit` | `bundle add emailit` | Ruby 3.0+ | [emailit-ruby](https://github.com/emailit/emailit-ruby) |
| Go | `github.com/emailit/emailit-go/v2` | `go get github.com/emailit/emailit-go/v2` | Go 1.21+ | [emailit-go](https://github.com/emailit/emailit-go) |
| Java | `com.emailit:emailit-java` | Maven nebo Gradle, viz níže | Java 11+ | [emailit-java](https://github.com/emailit/emailit-java) |
| .NET | `Emailit` | `dotnet add package Emailit` | .NET 8+ | [emailit-dotnet](https://github.com/emailit/emailit-dotnet) |
| Rust | `emailit` | `cargo add emailit` | Rust 1.85+ a Tokio | [emailit-rust](https://github.com/emailit/emailit-rust) |

V Javě přidejte závislost s nejnovější verzí uvedenou v repozitáři:

```xml title="pom.xml"
<dependency>
  <groupId>com.emailit</groupId>
  <artifactId>emailit-java</artifactId>
  <version>VERSION</version>
</dependency>
```

```groovy title="build.gradle"
implementation 'com.emailit:emailit-java:VERSION'
```

## Odešlete e-mail

Každá knihovna při vytvoření klienta přijímá váš API klíč. Načtěte ho z proměnné prostředí, místo abyste ho zapisovali přímo do kódu.

**Node.js**

```javascript
import { Emailit } from '@emailit/node';

const emailit = new Emailit(process.env.EMAILIT_API_KEY);

const email = await emailit.emails.send({
  from: 'Acme <hello@acme.com>',
  to: 'ada@example.com',
  subject: 'Welcome to Acme',
  html: '<p>Thanks for signing up.</p>',
});

console.log(email.id);
```

**PHP**

```php
require 'vendor/autoload.php';

$emailit = Emailit::client(getenv('EMAILIT_API_KEY'));

$email = $emailit->emails()->send([
    'from'    => 'Acme <hello@acme.com>',
    'to'      => 'ada@example.com',
    'subject' => 'Welcome to Acme',
    'html'    => '<p>Thanks for signing up.</p>',
]);

echo $email->id;
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'    => 'Acme <hello@acme.com>',
    'to'      => 'ada@example.com',
    'subject' => 'Welcome to Acme',
    'html'    => '<p>Thanks for signing up.</p>',
]);
```

**Python**

```python
import os
from emailit import EmailitClient

client = EmailitClient(os.environ["EMAILIT_API_KEY"])

email = client.emails.send({
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "subject": "Welcome to Acme",
    "html": "<p>Thanks for signing up.</p>",
})

print(email.id)
```

**Ruby**

```ruby
require "emailit"

client = Emailit::EmailitClient.new(ENV.fetch("EMAILIT_API_KEY"))

email = client.emails.send(
  from: "Acme <hello@acme.com>",
  to: "ada@example.com",
  subject: "Welcome to Acme",
  html: "<p>Thanks for signing up.</p>"
)

puts email.id
```

**Go**

```go
package main

import (
    "fmt"
    "os"

    "github.com/emailit/emailit-go/v2"
)

func main() {
    client := emailit.NewClient(os.Getenv("EMAILIT_API_KEY"))

    email, err := client.Emails.Send(&emailit.SendEmailRequest{
        From:    "Acme <hello@acme.com>",
        To:      []string{"ada@example.com"},
        Subject: "Welcome to Acme",
        Html:    "<p>Thanks for signing up.</p>",
    })
    if err != nil {
        panic(err)
    }

    fmt.Println(email.Id)
}
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
import java.util.List;

EmailitClient emailit = new EmailitClient(System.getenv("EMAILIT_API_KEY"));

EmailitObject email = emailit.emails().send(
    EmailSendParams.builder()
        .setFrom("Acme <hello@acme.com>")
        .setTo(List.of("ada@example.com"))
        .setSubject("Welcome to Acme")
        .setHtml("<p>Thanks for signing up.</p>")
        .build()
);

System.out.println(email.getString("id"));
```

**.NET**

```csharp
using Emailit;
using Emailit.Options;
using Emailit.Resources;

var emailit = new EmailitClient(Environment.GetEnvironmentVariable("EMAILIT_API_KEY"));

Email email = emailit.Emails.Send(new EmailSendOptions
{
    From = "Acme <hello@acme.com>",
    To = new[] { "ada@example.com" },
    Subject = "Welcome to Acme",
    Html = "<p>Thanks for signing up.</p>",
});

Console.WriteLine(email.Id);
```

**Rust**

```rust
use emailit::types::CreateEmailBaseOptions;
use emailit::{Emailit, Result};

#[tokio::main]
async fn main() -> Result<()> {
    let emailit = Emailit::new(&std::env::var("EMAILIT_API_KEY").expect("EMAILIT_API_KEY is not set"));

    let options = CreateEmailBaseOptions::new(
        "Acme <hello@acme.com>",
        ["ada@example.com"],
        "Welcome to Acme",
    )
    .with_html("<p>Thanks for signing up.</p>");

    let email = emailit.emails.send(options).await?;
    println!("{:?}", email.id);

    Ok(())
}
```

**cURL**

```bash
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "subject": "Welcome to Acme",
    "html": "<p>Thanks for signing up.</p>"
  }'
```

Adresa `from` musí být na [ověřené odesílací doméně](/cs/docs/domains/add-a-domain/). Dokud váš workspace nemá [produkční přístup](/cs/docs/workspaces/production-access/), můžete odesílat jen na e-mailové adresy účtů členů workspace.

## Co knihovny pokrývají

Každá knihovna zpřístupňuje stejné služby: e-maily, domény, API klíče, seznamy kontaktů, odběratele, šablony, blokované adresy, ověření e-mailů, seznamy k ověření, webhooky, kontakty a události. Chyby se vyhazují jako typované výjimky nebo vracejí jako chybové hodnoty, například chyba autentizace pro `401`, chyba limitu rychlosti pro `429` a chyba validace pro `422`, takže můžete každý případ ošetřit zvlášť.

Některé novější endpointy knihovny zatím nepokrývají, mimo jiné přeposlání e-mailu, kampaně, automatizace, formuláře a DMARC reporty. Knihovny také nenastavují hlavičku `Idempotency-Key`. V těchto případech volejte endpoint přes HTTP se stejným API klíčem, jak ukazuje příklad níže.

Nastavení pro konkrétní frameworky, včetně mail transportů, rout pro webhooky a konfigurace SMTP, najdete v návodech pro frameworky: [Node.js](/cs/docs/frameworks/nodejs/), [Next.js](/cs/docs/frameworks/nextjs/), [Nuxt](/cs/docs/frameworks/nuxt/), [Laravel](/cs/docs/frameworks/laravel/), [PHP](/cs/docs/frameworks/php/), [Python](/cs/docs/frameworks/python/), [Ruby on Rails](/cs/docs/frameworks/rails/), [Go](/cs/docs/frameworks/go/), [Java](/cs/docs/frameworks/java/), [.NET](/cs/docs/frameworks/dotnet/) a [WordPress](/cs/docs/frameworks/wordpress/).

## Balíček s MCP serverem

Open-source balíček [`@emailit/emailit-mcp`](https://github.com/emailit/emailit-mcp) spouští MCP server na vašem počítači, aby AI asistenti mohli volat Emailit s vaším API klíčem:

```bash
npx -y @emailit/emailit-mcp
```

Většina lidí ho nepotřebuje: hostovaný server na `https://api.emailit.com/mcp` nevyžaduje žádnou instalaci. Obě možnosti porovnává stránka [Lokální spuštění MCP serveru](/cs/docs/mcp/local-server/).

`@emailit/js` je jiný balíček: je to skript pro prohlížeč, který na vašem webu zobrazuje [formuláře Emailitu](/cs/docs/forms/install/), ne klient API.

## Používejte API přes HTTP

Knihovnu nepotřebujete. Poslouží jakýkoli HTTP klient, který umí posílat JSON:

- Základní URL: `https://api.emailit.com/v2`
- Hlavičky: `Authorization: Bearer <your API key>` a `Content-Type: application/json`
- Těla požadavků a odpovědi: JSON

Například přeposlání e-mailu s idempotenčním klíčem z Node.js bez SDK:

```javascript
const response = await fetch('https://api.emailit.com/v2/emails/em_4K6oASS7KP9ztzWmSN9ndEu13HW/forward', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EMAILIT_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': 'forward-order-1042',
  },
  body: JSON.stringify({ to: 'support@acme.com' }),
});

if (!response.ok) {
  throw new Error(`Emailit returned ${response.status}: ${await response.text()}`);
}
```

Než si napíšete vlastního klienta, přečtěte si stránky [Chyby](/cs/docs/api-reference/errors/) a [Limity rychlosti](/cs/docs/api-reference/rate-limits/), abyste správně ošetřili odpovědi `4xx` a `retry-after`. Pokud vaše aplikace už umí SMTP, můžete API úplně vynechat a použít [SMTP relay](/cs/docs/smtp/settings/).

## Komunitní knihovny

Emailit nespravuje žádné knihovny mimo seznam výše. Pokud najdete nebo vytvoříte knihovnu pro jiný jazyk nebo framework, zkontrolujte její kód dřív, než jí dáte API klíč, a dejte přednost klíči jen pro odesílání omezenému na jednu doménu. Pokud chcete, abychom ji tu zmínili, dejte nám vědět na support@emailit.com nebo na [Discordu](https://discord.emailit.com).

## Související

  - [Přehled pro vývojáře](/cs/docs/developers/): Základní URL, ID, chyby, stránkování a limity rychlosti.
  - [API klíče](/cs/docs/developers/api-keys/): Vytvořte klíč, který vaše knihovna potřebuje.
  - [Odesílání e-mailů přes API](/cs/docs/email-api/send-email/): Šablony, přílohy, plánování a měření.
  - [Podpisy webhooků](/cs/docs/webhooks/request-signature/): Ověřte, že požadavky webhooků přicházejí z Emailitu.

---
Zdroj: https://emailit.com/cs/docs/sdks/
