لیستهای محدودیت
مدیریت لیستهای محدودیت برای جلوگیری از ارسال به آدرسهای نامعتبر، لغو اشتراکشده یا شکایتشده
لیست محدودیت از ارسال ایمیل به آدرسهایی که برگشتی داشتهاند، لغو اشتراک کردهاند یا شکایت ثبت کردهاند جلوگیری میکند. MailLand محدودیتها را بهصورت خودکار از رویدادهای برگشتی و شکایت مدیریت میکند و شما میتوانید ورودیها را بهصورت دستی از طریق API اضافه یا حذف کنید.
انواع محدودیت
| نوع | مقدار | توضیح | محدوده پیشفرض |
|---|---|---|---|
HardBounce | 1 | خرابی دائمی در تحویل | Global (همیشه) |
SoftBounce | 2 | خرابی موقت (حذف بازاریابی ۳۰روزه؛ ارتقا فقط پس از حداقل ۳ برگشتی واجد شرایط در بازهای حداقل ۷روزه) | Marketing (انقضای ۳۰ روزه) |
Complaint | 3 | گیرنده ایمیل را اسپم گزارش داده | Global (همیشه) |
Unsubscribe | 4 | گیرنده لغو اشتراک کرده | بستگی به نوع پیام |
Manual | 5 | بهصورت دستی از طریق API یا داشبورد اضافه شده | هر محدودهای |
Invalid | 6 | فرمت ایمیل نامعتبر | Global (همیشه) |
SpamTrap | 7 | آدرس تله اسپم شناختهشده | Global (همیشه) |
RoleAddress | 8 | ایمیل نقشمحور (info@، admin@ و غیره) | Global (همیشه) |
محدودههای محدودیت
محدودهها کنترل میکنند که چه نوع ایمیلهایی مسدود میشوند:
| محدوده | مقدار | رفتار |
|---|---|---|
Global | 0 | تمام ایمیلها را مسدود میکند (تراکنشی و بازاریابی) |
Marketing | 1 | ایمیلهای بازاریابی را مسدود میکند؛ ایمیلهای تراکنشی همچنان تحویل داده میشوند |
Transactional | 2 | فقط ایمیلهای تراکنشی را مسدود میکند (نادر) |
List | 3 | فقط ایمیلهای یک لیست پستی خاص را مسدود میکند |
محدودیتهای محدوده:
HardBounce،Complaint،Invalid،SpamTrap،RoleAddress← فقط محدوده GlobalSoftBounce← معمولاً محدوده MarketingUnsubscribe← Global، Marketing یا List (نه Transactional)Manual← هر محدودهای
فهرست محدودیتها
GET https://api.mail.land/v1/transactional/suppressionsاحراز هویت با Authorization: Bearer <token> یا X-API-Key: <api key> انجام میشود.
curl https://api.mail.land/v1/transactional/suppressions \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."پارامترهای جستجو
| پارامتر | نوع | پیشفرض | توضیح |
|---|---|---|---|
cursor | string | - | نشانگر مبهم از nextCursor صفحهٔ قبل. برای صفحهٔ اول حذف کنید. |
limit | int | 50 | آیتم در هر صفحه (حداکثر ۱۰۰) |
search | string | - | فیلتر بر اساس آدرس ایمیل |
type | SuppressionType | - | فیلتر بر اساس نوع |
scope | SuppressionScope | - | فیلتر بر اساس محدوده |
mailingListId | string | - | شناسه عمومی لیست پستی که در تننت شما بازشناسی میشود. شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
fromDate | datetime | ۹۰ روز قبل | تاریخ شروع |
toDate | datetime | اکنون | تاریخ پایان |
sortBy | string | CreatedAt | فیلد مرتبسازی |
sortDescending | bool | true | جهت مرتبسازی |
{
"items": [
{
"id": "k3v9x2m8q1w7z4",
"email": "[email protected]",
"suppressionType": "hardBounce",
"scope": "global",
"mailingListId": null,
"mailingListName": null,
"expiresAt": null,
"reason": "550 5.1.1 The email account does not exist",
"bounceType": "Hard",
"bounceCategory": "invalid_recipient",
"bounceCount": 1,
"lastBounceAt": "2026-02-17T12:00:00Z",
"unsubscribeSource": null,
"campaignId": null,
"subscriberId": null,
"source": "webhook",
"notes": null,
"createdAt": "2026-02-17T12:00:01Z",
"isLocked": false,
"lockedReason": null
}
],
"nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
"hasMore": true
}mailingListId، campaignId و subscriberId شناسه عمومی منبع مرتبط هستند که در تننت شما بازشناسی میشوند؛ هرگز شناسه عددی داخلی سطر نیستند. هر یک، در نبود چنین پیوندی یا در صورت حذفشدن منبع مرتبط، مقدار null دارد.
آمار محدودیت
خلاصهای از لیست محدودیت خود را دریافت کنید:
GET https://api.mail.land/v1/transactional/suppressions/statscurl https://api.mail.land/v1/transactional/suppressions/stats \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"totalCount": 5000,
"globalCount": 3000,
"marketingCount": 1500,
"transactionalCount": 200,
"listCount": 300,
"hardBounceCount": 2000,
"softBounceCount": 1500,
"complaintCount": 500,
"unsubscribeCount": 700,
"manualCount": 200,
"invalidCount": 50,
"spamTrapCount": 30,
"roleAddressCount": 20,
"expiringCount": 85,
"lastSuppression": "2026-02-17T12:00:01Z"
}expiringCount تعداد برگشتیهای ناعمی را نشان میدهد که طی ۷ روز آینده منقضی خواهند شد.
بررسی محدودیت یک ایمیل
بررسی تکی
GET https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketingcurl "https://api.mail.land/v1/transactional/suppressions/[email protected]&messageType=Marketing" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| پارامتر | نوع | پیشفرض | توضیح |
|---|---|---|---|
email | string | - | آدرس ایمیل (الزامی) |
messageType | string | Marketing | Marketing یا Transactional |
mailingListId | string | - | شناسه عمومی لیست پستی که در تننت شما بازشناسی میشود. شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
{
"email": "[email protected]",
"isSuppressed": true,
"messageType": "Marketing"
}بررسی گروهی
بررسی تا ۱٬۰۰۰ ایمیل بهطور همزمان:
POST https://api.mail.land/v1/transactional/suppressions/check-bulkcurl -X POST https://api.mail.land/v1/transactional/suppressions/check-bulk \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"emails":["[email protected]","[email protected]","[email protected]"],"messageType":"Marketing","mailingListId":null}'{
"emails": ["[email protected]", "[email protected]", "[email protected]"],
"messageType": "Marketing",
"mailingListId": null
}{
"suppressedEmails": ["[email protected]"]
}افزودن محدودیت
POST https://api.mail.land/v1/transactional/suppressionscurl -X POST https://api.mail.land/v1/transactional/suppressions \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","suppressionType":"Manual","scope":"Global","reason":"Customer requested removal from all lists","notes":"Ticket #4521"}'{
"email": "[email protected]",
"suppressionType": "Manual",
"scope": "Global",
"reason": "Customer requested removal from all lists",
"notes": "Ticket #4521"
}| فیلد | نوع | الزامی | پیشفرض | توضیح |
|---|---|---|---|---|
email | string | بله | - | آدرس ایمیل (حداکثر ۲۵۵ کاراکتر) |
suppressionType | string | خیر | Manual | نوع محدودیت |
scope | string | خیر | Global | محدوده محدودیت |
mailingListId | string | خیر | - | شناسه عمومی لیست پستی که در تننت شما بازشناسی میشود. در صورتی که محدوده List باشد الزامی است؛ شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
reason | string | خیر | - | دلیل (حداکثر ۵۰۰ کاراکتر) |
notes | string | خیر | - | یادداشتهای داخلی |
پاسخ 201 Created به همراه شیء محدودیت کامل برمیگرداند. هدر Location برابر است با
/v1/transactional/suppressions: یعنی همان مسیر فهرست، چون مسیری برای دریافت بر اساس شناسه وجود
ندارد. از فیلد id در بدنهٔ پاسخ برای شناسایی محدودیت ایجادشده استفاده کنید، و برای جستوجوی آن به
بخشهای «فهرست محدودیتها» یا «بررسی محدودیت یک ایمیل» در پایین مراجعه کنید.
افزودن گروهی
افزودن تا ۱٬۰۰۰ محدودیت بهطور همزمان:
POST https://api.mail.land/v1/transactional/suppressions/bulkcurl -X POST https://api.mail.land/v1/transactional/suppressions/bulk \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"emails":[{"email":"[email protected]","suppressionType":"Manual","scope":"Global","reason":"Cleanup"},{"email":"[email protected]","suppressionType":"Manual","scope":"Marketing"}]}'{
"emails": [
{ "email": "[email protected]", "suppressionType": "Manual", "scope": "Global", "reason": "Cleanup" },
{ "email": "[email protected]", "suppressionType": "Manual", "scope": "Marketing" }
]
}{
"totalCount": 2,
"addedCount": 2,
"skippedCount": 0,
"skippedEmails": [],
"message": "Added 2 suppressions"
}ایمیلهایی که از قبل در لیست محدودیت وجود دارند رد میشوند (تکراری نمیشوند).
وارد کردن از CSV
از محتوای متنی
POST https://api.mail.land/v1/transactional/suppressions/importcurl -X POST https://api.mail.land/v1/transactional/suppressions/import \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{"csvContent":"[email protected]\[email protected]\[email protected]","defaultReason":"Imported from legacy system","suppressionType":"Manual","scope":"Global"}'{
"csvContent": "[email protected]\n[email protected]\n[email protected]",
"defaultReason": "Imported from legacy system",
"suppressionType": "Manual",
"scope": "Global"
}از آپلود فایل
POST https://api.mail.land/v1/transactional/suppressions/import-filecurl -X POST "https://api.mail.land/v1/transactional/suppressions/import-file?scope=List&mailingListId=123" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-F "[email protected]"scope و mailingListId پارامتر کوئری هستند، نه فیلد فرم: فیلد فرمی با هر یک از این دو نام، بیسروصدا نادیده گرفته میشود؛ بنابراین وارد کردن با محدوده List که بهصورت فیلد فرم ارسال شود با خطای 400 شکست میخورد. mailingListId همان شناسه عمومی لیست است که در تننت شما بازشناسی میشود؛ شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند.
یک فایل .csv (حداکثر ۵ مگابایت) با آدرسهای ایمیل جداشده با کاما یا خط جدید آپلود کنید. سطر هدر حاوی "email" بهصورت خودکار نادیده گرفته میشود.
پارامترهای کوئری:
| پارامتر | نوع | توضیح |
|---|---|---|
file | file (فیلد فرم چندبخشی) | فایل CSV (حداکثر ۵ مگابایت، پسوند .csv الزامی) |
scope | string (کوئری) | محدوده محدودیت (پیشفرض: Global) |
mailingListId | string (کوئری) | شناسه عمومی لیست پستی که در تننت شما بازشناسی میشود. در صورتی که محدوده List باشد الزامی است؛ شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
{
"totalRows": 1000,
"importedCount": 950,
"skippedCount": 40,
"invalidCount": 10,
"invalidEmails": ["not-an-email", "missing-domain@", "..."],
"errors": [],
"message": "Imported 950 emails. 40 already existed. 10 invalid."
}لیست invalidEmails حداکثر ۱۰ ورودی نامعتبر را نشان میدهد. ایمیلهای از قبل موجود بهعنوان skippedCount محاسبه میشوند، نه خطا.
صادرکردن محدودیتها
لیست محدودیت خود را بهصورت CSV دانلود کنید:
GET https://api.mail.land/v1/transactional/suppressions/exportcurl https://api.mail.land/v1/transactional/suppressions/export \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-o suppressions.csv| پارامتر | نوع | توضیح |
|---|---|---|
type | SuppressionType | فیلتر بر اساس نوع |
scope | SuppressionScope | فیلتر بر اساس محدوده |
mailingListId | string | شناسه عمومی لیست پستی که در تننت شما بازشناسی میشود. شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
یک فایل CSV با ستونهای زیر برمیگرداند: email، type، scope، mailing_list، reason، bounce_count، source، created_at، expires_at. محدود به ۱۰۰٬۰۰۰ سطر.
حذف محدودیت
بر اساس شناسه
DELETE https://api.mail.land/v1/transactional/suppressions/{id}curl -X DELETE https://api.mail.land/v1/transactional/suppressions/k3v9x2m8q1w7z4 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."بر اساس ایمیل
DELETE https://api.mail.land/v1/transactional/suppressions/[email protected]curl -X DELETE "https://api.mail.land/v1/transactional/suppressions/[email protected]" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| پارامتر | نوع | توضیح |
|---|---|---|
email | string | ایمیل برای حذف محدودیت (الزامی) |
scope | SuppressionScope | فقط برای این محدوده حذف شود |
mailingListId | string | فقط برای این لیست پستی حذف شود: همان شناسه عمومی آن که در تننت شما بازشناسی میشود. شناسه ناشناخته، متعلق به تننت دیگر یا عددی، خطای 404 برمیگرداند. |
در صورت موفقیت 204 No Content، در صورت عدم یافتن 404 برمیگرداند.
محدودیتهای قفلشده
برخی محدودیتها برای حفاظت از اعتبار فرستنده و رعایت مقررات ضد اسپم قابل حذف نیستند:
| نوع قفلشده | دلیل |
|---|---|
Complaint | شکایت اسپم: الزام انطباق |
SpamTrap | تله اسپم شناختهشده: حفاظت از قابلیت تحویل |
لغو اشتراک از طریق FeedbackLoop | حلقه بازخورد ISP |
لغو اشتراک از طریق OneClick | لغو اشتراک یککلیکی RFC 8058 |
لغو اشتراک از طریق ManualLink | کاربر لغو اشتراک را تأیید کرده |
لغو اشتراک از طریق Preference | انتخاب مرکز تنظیمات کاربر |
تلاش برای حذف یک محدودیت قفلشده پاسخ زیر را برمیگرداند:
{
"code": "SUPPRESSION_LOCKED",
"message": "Cannot delete: Spam complaint - compliance requirement",
"details": {
"lockedReason": "Spam complaint - compliance requirement"
}
}حذف محدودیتهای مبتنی بر شکایت و ارسال مجدد به آن آدرسها به اعتبار فرستنده شما آسیب میزند و ممکن است قوانین ضد اسپم را نقض کند. این محدودیتها برای حفاظت از شما قفل شدهاند.
منابع لغو اشتراک
هنگامی که گیرندهای لغو اشتراک میکند، منبع ثبت میشود:
| منبع | مقدار | توضیح | قفلشده |
|---|---|---|---|
ListUnsubscribeHeader | 0 | هدر List-Unsubscribe از RFC 8058 | خیر |
ListUnsubscribeMail | 1 | لغو اشتراک از طریق mailto: | خیر |
WebForm | 2 | صفحه لغو اشتراک وب | خیر |
Api | 3 | فراخوانی API | خیر |
Admin | 4 | پنل مدیریت | خیر |
FeedbackLoop | 5 | حلقه بازخورد ISP | بله |
OneClick | 6 | POST یککلیکی RFC 8058 | بله |
ManualLink | 7 | کاربر از طریق لینک تأیید کرده | بله |
Preference | 8 | انتخاب مرکز تنظیمات | بله |
پاسخهای خطا
| وضعیت | کد | توضیح |
|---|---|---|
400 | INVALID_REQUEST | خطای اعتبارسنجی (ایمیل، محدوده یا نوع نامعتبر) |
400 | INVALID_EMAIL_FORMAT | فرمت آدرس ایمیل نامعتبر است |
400 | CONTENT_TOO_LARGE | فایل CSV بیش از ۵ مگابایت است |
403 | SUPPRESSION_LOCKED | حذف محدودیت قفلشده امکانپذیر نیست |
404 | RESOURCE_NOT_FOUND | محدودیت یافت نشد، یا mailingListId ارسالی هیچ لیست پستیای را در تننت شما نام نمیبرد |
مراحل بعدی
- برگشتیها: درک انواع برگشتی و محدودیت خودکار
- مرور کلی قابلیت تحویل: نظارت بر اعتبار فرستنده
- رویدادهای Webhook: دریافت رویدادهای
message.bounced(رویدادهایsuppression.added/suppression.removedدر کاتالوگ تعریف شدهاند اما امروز هرگز صادر نمیشوند)