# Java SDK

{% hint style="warning" %}
**SERVICIO DISCONTINUADO**

La API de envíos transaccionales ya no está disponible para nuevas suscripciones.&#x20;

Para las suscripciones activas, **el servicio será discontinuado en su totalidad el día 1/3/2026.**
{% endhint %}

## Instalación

Las formas más comunes de incluir la SDK en los proyectos es utilizando Maven o Gradle.&#x20;

### Maven

```markup
<dependency>
    <groupId>com.myperfit.sdk.transactional</groupId>
    <artifactId>transactionalsdk</artifactId>
    <version>[1.0,2.0)</version>
</dependency>
```

### Gradle

```javascript
compile group: 'com.myperfit.sdk.transactional', name: 'transactionalsdk', version: '1.+'
```

## Uso básico

```java
PerfitTransactional perfit = PerfitTransactional.builder()
        .apiKey("API_KEY")
        .build();

// Remitente
MailAddressRequest fromAddress = MailAddressRequest.builder()
        .email("from@midominio.com")
        .name("Nombre Remitente")
        .build();

// Contenidos
MailContentRequest content = MailContentRequest.builder()
        .html("<h1>contenido html</h1>")
        .text("contenido texto plan")
        .build();

// Listado de destinatarios
List<MailRecipientRequest> recipients = new ArrayList<>();

MailAddressRequest toAddress1 = MailAddressRequest.builder()
        .email("to@midominio.com")
        .name("Nombre Destinatario") 
        .build();
        
MailRecipientRequest recipient1 = MailRecipientRequest.builder()
        .to(toAddress1)
        .substitutions(Map.of("first_name","Nombre", "last_name", "Apellido"))
        .customArgs(Map.of("my_tracking_id","value1", "other_id", "value2"))
        .build();
        
recipients.add(recipient1);

// Mensaje completo
SendMailRequest request = SendMailRequest.builder()
        .from(fromAddress)
        .subject("Test Subject")
        .content(content)
        .recipients(recipients)
        .tags(List.of("tag1", "tag2"))
        .build();

try {
        // Envío del email
        perfit.send(request);
} catch (RequestFailedException ex) {
        // Manejar excepciones
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.myperfit.com/transactional-api/java-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
