# SMTP গেটওয়ে

SMTP গেটওয়ে স্ট্যান্ডার্ড মেল সাবমিশন গ্রহণ করে এবং প্রতিটি বার্তা [Messaging API v2 `Notify`](/bn/developer/api-reference/messaging-api-v2/notify/)-এ একটি ট্রানজ্যাকশনাল ইমেল হিসাবে ফরোয়ার্ড করে। যখন একটি বিদ্যমান মেল টুল — একটি MTA, একটি ফ্রেমওয়ার্ক মেইলার, একটি SDK — API-তে একটি JSON অনুরোধের চেয়ে প্লাগ ইন করা সহজ হয়, তখন এটি ব্যবহার করুন।

<Aside type="note">
গেটওয়ে শুধুমাত্র ট্রানজ্যাকশনালের জন্য। অডিয়েন্স সেগমেন্ট, শিডিউলিং বা A/B ক্যাম্পেইনের জন্য, সরাসরি [`Notify`](/bn/developer/api-reference/messaging-api-v2/notify/) কল করুন।
</Aside>

## এটি কিভাবে কাজ করে

```
   যেকোনো SMTP ক্লায়েন্ট      smtp গেটওয়ে              Messaging API v2
   ──────────────── ──────> ──────────────── ──────> ─────────────────
       submission            STARTTLS                gRPC Notify
       AUTH PLAIN            + AUTH PLAIN            Authorization: Token
```

1. ক্লায়েন্ট `smtp.pushwoosh.com`-এর সাথে পোর্ট `587`-এ সংযোগ করে, `STARTTLS`-এর মাধ্যমে সংযোগটি TLS-এ আপগ্রেড করে, তারপর `AUTH PLAIN`-এর মাধ্যমে প্রমাণীকরণ করে।
2. গেটওয়ে MIME বার্তাটি পার্স করে এবং `platforms: ["EMAIL"]` এবং `message_type: TRANSACTIONAL`-এর সাথে একটি `Notify` অনুরোধ তৈরি করে।
3. `AUTH PLAIN` থেকে প্রাপ্ত API টোকেনটি Messaging API-তে `Authorization` হেডার হিসাবে ফরোয়ার্ড করা হয়। টোকেন যাচাইকরণ, অ্যাপ্লিকেশন ম্যাচিং, পাঠানোর পরিচয় এবং বাউন্স হ্যান্ডলিং সবই API সাইডে ঘটে।

## এন্ডপয়েন্ট

| সেটিং <div style="width:140px"></div> | মান <div style="width:340px"></div> |
|---------|-------|
| হোস্ট    | `smtp.pushwoosh.com` |
| পোর্ট    | `587` (SMTP সাবমিশন) |
| TLS     | `STARTTLS` — `AUTH`-এর আগে বাধ্যতামূলক |
| Auth    | `AUTH PLAIN` |

## প্রমাণীকরণ

`AUTH PLAIN` দুটি Pushwoosh ক্রেডেনশিয়াল ব্যবহার করে।

| AUTH ফিল্ড <div style="width:120px"></div> | Pushwoosh মান |
|------------|-----------------|
| `username` | [অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code), উদাহরণস্বরূপ `XXXXX-XXXXX` |
| `password` | [সার্ভার API টোকেন](/bn/developer/api-reference/api-access-token/#server-api-token) |

TLS-এর বাইরে `AUTH` প্রত্যাখ্যান করা হয়। টোকেনটি কখনও বার্তায় প্রদর্শিত হয় না — এটি শুধুমাত্র আপস্ট্রিম `Notify` কলকে অনুমোদন করার জন্য ব্যবহৃত হয়।

## বার্তাগুলি কীভাবে Notify-তে ম্যাপ করা হয়

| MIME বা SMTP ফিল্ড <div style="width:200px"></div> | Notify ফিল্ড |
|--------------------|--------------|
| `RCPT TO`          | `target.users.list` — Pushwoosh এই ঠিকানাগুলিকে সাবস্ক্রাইবারদের কাছে সমাধান করে |
| AUTH `username`    | `application` |
| `Subject:` হেডার  | `email_payload.subject["default"]` (RFC 2047 ডিকোড করা) |
| `From:` হেডার     | `email_payload.from` — `name` এবং `email` |
| HTML অংশ          | `email_payload.body` (যখন উভয় অংশ উপস্থিত থাকে তখন পছন্দনীয়) |
| প্লেইন-টেক্সট অংশ    | `email_payload.body` (যখন HTML অনুপস্থিত থাকে তখন ব্যবহৃত হয়) |
| `MAIL FROM`        | উপেক্ষা করা হয় — Pushwoosh তার নিজস্ব পাঠানোর পরিচয় প্রতিস্থাপন করে এবং নিজেই বাউন্স পরিচালনা করে |

প্রতিটি বার্তা `schedule.send_date: now`-এর সাথে পাঠানো হয়।

## সীমা

| সীমা <div style="width:280px"></div> | মান |
|-------|-------|
| সর্বোচ্চ বার্তার আকার       | 25 MiB |
| প্রতি এনভেলপে সর্বোচ্চ প্রাপক (`RCPT TO`) | 50 |

## ত্রুটি ম্যাপিং

Messaging API দ্বারা প্রত্যাবর্তিত gRPC স্ট্যাটাস কোডগুলি স্ট্যান্ডার্ড SMTP রিপ্লাই কোডে অনুবাদ করা হয় যাতে যেকোনো SMTP ক্লায়েন্ট একটি অর্থপূর্ণ ত্রুটি প্রদর্শন করে।

| আপস্ট্রিম gRPC স্ট্যাটাস <div style="width:280px"></div> | SMTP রিপ্লাই <div style="width:120px"></div> | অর্থ |
|----------------------|------------|---------|
| `Unauthenticated`                                          | `535 5.7.8` | ভুল অ্যাপ্লিকেশন কোড বা API টোকেন। |
| `PermissionDenied`                                         | `550 5.7.1` | এই অ্যাপ্লিকেশনের জন্য টোকেনের কোনো অধিকার নেই। |
| `InvalidArgument` / `FailedPrecondition` / `OutOfRange`    | `550 5.6.0` | ভুল MIME কন্টেন্ট (উদাহরণস্বরূপ বিষয় বা বডি অনুপস্থিত)। |
| `NotFound`                                                 | `550 5.1.1` | অ্যাপ্লিকেশন বা প্রাপক পাওয়া যায়নি। |
| `ResourceExhausted`                                        | `452 4.5.3` | রেট লিমিটে পৌঁছে গেছে — পরে আবার চেষ্টা করুন। |
| `DeadlineExceeded` / `Unavailable`                         | `451 4.4.1` | অস্থায়ী আপস্ট্রিম ত্রুটি — পরে আবার চেষ্টা করুন। |
| অন্য কোনো ব্যর্থতা                                          | `451 4.5.0` | অস্থায়ী অভ্যন্তরীণ ত্রুটি — পরে আবার চেষ্টা করুন। |

`4xx` রেঞ্জের কোডগুলি অস্থায়ী এবং ক্লায়েন্টের দ্বারা পুনরায় চেষ্টা করা উচিত; `5xx` রেঞ্জের কোডগুলি স্থায়ী এবং ক্লায়েন্ট-সাইড ফিক্স প্রয়োজন।

## উদাহরণ: swaks দিয়ে পাঠান

```bash
swaks --server smtp.pushwoosh.com:587 \
      --auth-user "XXXXX-XXXXX" \
      --auth-password "YOUR_API_TOKEN" \
      --tls \
      --from from@example.com \
      --to user@example.com \
      --header "Subject: Hello from SMTP gateway" \
      --body "Plain-text body"
```

MIME বডিতে `From:` হেডারটি Pushwoosh-এ পৌঁছায় — `--from` এনভেলপ (`MAIL FROM`) বাতিল করা হয়।

## নোট

- গেটওয়েটি স্টেটলেস এবং বার্তা সংরক্ষণ করে না। একবার ফরোয়ার্ড করা হলে, ডেলিভারির দায়িত্ব Messaging API-এর।
- বাউন্স, অভিযোগ, এবং আনসাবস্ক্রাইব লিঙ্কগুলি Pushwoosh দ্বারা পরিচালিত হয়, যেমনটি অন্য যেকোনো ট্রানজ্যাকশনাল ইমেলের জন্য হয়।
- ক্যাম্পেইন পাঠানোর জন্য (সেগমেন্ট, শিডিউলিং, A/B), সরাসরি [`Notify`](/bn/developer/api-reference/messaging-api-v2/notify/) ব্যবহার করুন — SMTP গেটওয়ে শুধুমাত্র সাবমিশনের জন্য।

## আরও দেখুন

<CardGrid>
  <LinkCard title="Messaging API v2 ওভারভিউ" href="/developer/api-reference/messaging-api-v2/" />
  <LinkCard title="Notify" href="/developer/api-reference/messaging-api-v2/notify/" />
  <LinkCard title="ইমেল পেলোড রেফারেন্স" href="/developer/api-reference/messaging-api-v2/email-payload-reference/" />
  <LinkCard title="মার্কেটিং বনাম ট্রানজ্যাকশনাল" href="/product/messaging-channels/marketing-vs-transactional/" />
</CardGrid>