תיעוד · מדריכים
מעבר מ-Resend לבול
בול תואמת ל-API של Resend: הספרייה של Resend ממשיכה לעבוד כמו שהיא, ומחליפים רק את הכתובת ואת המפתח. כאן — הדרך המלאה, צעד אחר צעד.
נבדק ב-13 באוקטובר 2026 עם הספריות הרשמיות של Resend: resend 6.32.1 (Node.js 22) ו-2.49.1 (Python 3.12).
1. דומיין
מוסיפים את הדומיין בבול (דשבורד ← דומיינים) ומעתיקים את הרשומות ל-DNS. הרשומות שונות מאלה של Resend, והן לא מתנגשות בהן — אפשר להשאיר את הרשומות של Resend עד שהמעבר נגמר, ואז למחוק.
המצב משתנה ל"מאומת" לבד, אחרי שהרשומות מתפרסמות. עד אז בול מחזירה שגיאה ברורה על הדומיין, ולא שולחת.
2. מפתח API
בדשבורד: מפתחות API ← מפתח חדש. המפתח מתחיל ב-bul_live_ ומוצג פעם אחת בלבד. הוא נכנס לאותו משתנה שבו היה המפתח של Resend.
3. Node.js — שני משתני סביבה
RESEND_API_KEY=bul_live_xxxxxxxx
RESEND_BASE_URL=https://bulapi.friman.appהקוד לא משתנה:
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: "החנות שלי <orders@example.co.il>",
to: ["dana@example.com"],
subject: "שלום מבול",
html: "<p>נשלח עם הספרייה של Resend</p>",
});
console.log(data, error);מה שהדוגמה הזו מדפיסה בפועל:
{ id: '97e3341f-…' } null4. Python — אותו דבר
RESEND_API_KEY=bul_live_xxxxxxxx
RESEND_API_URL=https://bulapi.friman.appimport os
import resend
resend.api_key = os.environ["RESEND_API_KEY"]
email = resend.Emails.send({
"from": "החנות שלי <orders@example.co.il>",
"to": ["dana@example.com"],
"subject": "שלום מבול",
"html": "<p>נשלח עם הספרייה של Resend (Python)</p>",
})
print(email["id"])ב-Python שם המשתנה הוא RESEND_API_URL (וב-Node — RESEND_BASE_URL). כך הספריות של Resend קוראות אותו.
5. HTTP ישיר
אותם נתיבים (POST /emails, POST /emails/batch …), רק הכתובת https://bulapi.friman.app במקום https://api.resend.com.
6. Webhooks
יוצרים webhook בבול (resend.webhooks.create({ endpoint, events })) ומחליפים בקוד שמאמת את הסוד (whsec_…) בסוד החדש. הגוף והחתימה באותו פורמט (svix-id / svix-timestamp / svix-signature), כך שהאימות הקיים — resend.webhooks.verify או הספרייה של Svix — עובד כמו שהוא.
7. מה עובד כמו ב-Resend
to(עד 50),cc,bcc. בפנים בול שולחת עותק לכל נמען, כך שמעקב, הסרה ומוניטין הם לכל נמען;bccלא נחשף לאף אחד.- נמען שברשימת החסימה — הבקשה מצליחה, לא נשלח אליו כלום, ומגיע אירוע
email.suppressed. Idempotency-Key— 24 שעות.- שגיאות ו-429 באותו מבנה של Resend, עם הכותרות
ratelimit-*ו-retry-after. עד 10 בקשות בשנייה לחשבון.
8. מה שונה
- חסימות: כתובת שלא קיימת, תלונה או הסרה של הנמען — נשארות חסומות. אפשר למחוק רק חסימה שהוספתם בעצמכם.
- כמה יוצא ביום: קצב הבקשות הוא לכל חשבון, אבל כמה מיילים יוצאים בפועל נקבע לפי החבילה, המכסה היומית והחודשית, ושלב החשבון (חשבון חדש מתחיל בתקרה נמוכה שגדלה עם הזמן).
- עוד לא נתמך (תשובה 422 ברורה, לא כישלון שקט):
scheduled_at, תבניות,topic_id, אנשי קשר ו-Broadcasts. - ההגנות של בול — מכסות, מפסק מוניטין והקפאה — חלות גם כאן.
9. סדר מעבר מומלץ
- מוסיפים את הדומיין בבול ומחכים ל"מאומת" (הרשומות של Resend נשארות).
- יוצרים מפתח ו-webhook בבול.
- מחליפים את משתני הסביבה בסביבת בדיקה, ושולחים כמה מיילים לעצמכם.
- מחליפים בפרודקשן. אם משהו לא תקין — מחזירים את שני המשתנים, ו-Resend ממשיך כרגיל.
- אחרי שבוע תקין — מוחקים מה-DNS את הרשומות של Resend.
