مستندات Snad Mail API
راهنمای اتصال به API ارسال ایمیل با توکن اختصاصی و اعتبار حساب.
وبسایت اصلی: https://mr-amir.developer-noovin.ir
آدرس API
آدرس پایه: https://mr-amir.developer-noovin.ir/snad/email.php?api=send · متد: POST (پیشنهادی) یا GET
احراز هویت (روش اصلی: هدر)
توکن را در یکی از این دو هدر بفرستید:
X-API-Token: YOUR_TOKEN Authorization: Bearer YOUR_TOKEN
منسوخ (Deprecated): فرستادن توکن در پارامتر token (در آدرس یا بدنه) هنوز کار میکند تا برنامههای قدیمی از کار نیفتند، ولی توکن را در لاگ سرور، تاریخچه مرورگر و Referer لو میدهد. پاسخ این درخواستها هدر Deprecation: true دارد؛ لطفاً به هدر مهاجرت کنید. اگر هم هدر و هم پارامتر فرستاده شود، هدر ملاک است.
پارامترها
to: ایمیل گیرنده · subject: موضوع (حداکثر ۲۰۰ نویسه، بدون خط جدید) · message یا body: متن ساده ایمیل (حداکثر ۲۰۰۰۰ نویسه)
بدنه را میتوانید بهصورت JSON (Content-Type: application/json) یا فرم (application/x-www-form-urlencoded) بفرستید.
نمونه cURL (POST + JSON + هدر)
curl -X POST 'https://mr-amir.developer-noovin.ir/snad/email.php?api=send' \
-H 'X-API-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"to":"recipient@example.com","subject":"سلام","message":"متن ایمیل"}'نمونه cURL با Authorization: Bearer
curl -X POST 'https://mr-amir.developer-noovin.ir/snad/email.php?api=send' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d 'to=recipient@example.com' -d 'subject=Hello' -d 'message=Test'
نمونه PHP
$data = ['to' => 'recipient@example.com', 'subject' => 'سلام', 'message' => 'متن ایمیل'];
$ch = curl_init('https://mr-amir.developer-noovin.ir/snad/email.php?api=send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'X-API-Token: YOUR_TOKEN'],
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 20,
]);
$res = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (!$res['ok']) echo "خطا $status: " . $res['error'];نمونه JavaScript (سمت سرور، Node.js)
const r = await fetch('https://mr-amir.developer-noovin.ir/snad/email.php?api=send', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-API-Token': process.env.SNAD_TOKEN },
body: JSON.stringify({ to: 'recipient@example.com', subject: 'سلام', message: 'متن ایمیل' })
});
console.log(r.status, await r.json());توکن را هیچوقت در کد سمت مرورگر (فرانتاند) قرار ندهید؛ هر کسی میتواند آن را ببیند.
نمونه GET (منسوخ، فقط برای سازگاری)
curl -G 'https://mr-amir.developer-noovin.ir/snad/email.php?api=send' -H 'X-API-Token: YOUR_TOKEN' \ --data-urlencode 'to=recipient@example.com' --data-urlencode 'subject=Hello' --data-urlencode 'message=Test'
روش قدیمی ...&token=YOUR_TOKEN&to=... هنوز پشتیبانی میشود ولی منسوخ است.
پاسخ موفق
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 19
{"ok":true,"message":"ایمیل به سرور SMTP تحویل داده شد.","credits_remaining":99}پاسخ خطا و کدها
همه خطاها JSON با "ok":false و یک کد ثابت در error هستند؛ برنامه را بر اساس error بنویسید، نه متن message.
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8
{"ok":false,"error":"invalid_recipient","message":"آدرس گیرنده معتبر نیست."}| HTTP | error | توضیح |
|---|---|---|
| 400 | invalid_json | بدنه JSON قابل خواندن نیست. |
| 401 | missing_token | توکن فرستاده نشده است. |
| 401 | invalid_token | توکن اشتباه است یا تعویض شده است. |
| 402 | insufficient_credits | اعتبار حساب تمام شده است. |
| 405 | method_not_allowed | فقط GET و POST پذیرفته میشود. |
| 422 | invalid_recipient · invalid_subject · invalid_message | پارامتر نامعتبر یا خالی. |
| 429 | rate_limited | درخواست بیش از حد؛ به اندازه retry_after ثانیه (هدر Retry-After) صبر کنید. |
| 500 | storage_error | خطای ذخیرهسازی سرور. |
| 502 | smtp_send_failed | ارسال به SMTP ناموفق بود؛ اعتبار برگردانده شد. |
| 503 | storage_busy | سرور موقتاً مشغول است؛ چند ثانیه بعد دوباره تلاش کنید. |
محدودیت نرخ و قوانین استفاده
- هر توکن حداکثر ۲۰ درخواست در دقیقه میتواند بفرستد. هدرهای
X-RateLimit-LimitوX-RateLimit-Remainingوضعیت فعلی را نشان میدهند. - بعد از خطای
429یا503با تأخیر افزایشی (مثلاً ۱، ۲، ۴ ثانیه) دوباره تلاش کنید؛ خطاهای4xxدیگر را تکرار نکنید. - هر ارسال موفق یک اعتبار مصرف میکند و در خطای SMTP اعتبار برمیگردد.
- فقط به گیرندههایی ایمیل بفرستید که خودشان اجازه دادهاند. ارسال هرزنامه، فیشینگ یا تبلیغات ناخواسته ممنوع است و باعث مسدود شدن حساب میشود.
- اگر توکن لو رفت، از پنل کاربری «ساخت توکن جدید» را بزنید؛ توکن قبلی فوراً از کار میافتد.