نظرة عامة على الميزات

أرسل رسائل البريد الإلكتروني والإشعارات إلى مستخدميك.

ملاحظة: هذا محتوى تجريبي/مؤقت لأغراض العرض التوضيحي.

يتضمّن التطبيق وظائف البريد الإلكتروني للرسائل المعاملاتية وإشعارات المستخدمين.

إعداد البريد الإلكتروني

البريد الإلكتروني عبر Supabase (الافتراضي)

تُرسَل رسائل البريد الإلكتروني افتراضيًا عبر Supabase:

  • رسائل المصادقة (التسجيل، وإعادة تعيين كلمة المرور، والروابط السحرية)
  • التحقق من البريد الإلكتروني
  • تأكيد تغيير البريد الإلكتروني

خادم SMTP مخصّص

بالنسبة إلى الرسائل المعاملاتية، اضبط مزوّد SMTP الخاص بك:

# .env
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-username
SMTP_PASSWORD=your-password
SMTP_FROM_EMAIL=noreply@yourdomain.com
SMTP_FROM_NAME=Your App Name

إرسال رسائل البريد الإلكتروني

استخدام خدمة البريد الإلكتروني

import { sendEmail } from '~/lib/email/send-email';

await sendEmail({
  to: 'user@example.com',
  subject: 'Welcome to Our App',
  html: '<h1>Welcome!</h1><p>Thanks for signing up.</p>',
});

استخدام قوالب البريد الإلكتروني

أنشئ قوالب بريد إلكتروني قابلة لإعادة الاستخدام:

// lib/email/templates/welcome-email.tsx
import { EmailTemplate } from '~/lib/email/email-template';

interface WelcomeEmailProps {
  name: string;
  loginUrl: string;
}

export function WelcomeEmail({ name, loginUrl }: WelcomeEmailProps) {
  return (
    <EmailTemplate>
      <h1>Welcome, {name}!</h1>
      <p>We're excited to have you on board.</p>
      <a href={loginUrl}>Get Started</a>
    </EmailTemplate>
  );
}

// Send the email
import { render } from '@react-email/render';
import { WelcomeEmail } from '~/lib/email/templates/welcome-email';

const html = render(
  <WelcomeEmail name="John" loginUrl="https://app.com/login" />
);

await sendEmail({
  to: 'john@example.com',
  subject: 'Welcome to Our App',
  html,
});

أنواع رسائل البريد الإلكتروني

الرسائل المعاملاتية

رسائل تُرسَل استجابةً لإجراءات المستخدم:

  • رسائل الترحيب
  • تأكيدات الطلبات
  • إعادة تعيين كلمات المرور
  • إشعارات الحساب
  • تحديثات الفوترة

الرسائل التسويقية

رسائل ترويجية ورسائل لتعزيز التفاعل:

  • تحديثات المنتج
  • الإعلان عن الميزات
  • النشرات الإخبارية
  • سلاسل رسائل الإعداد الأولي

مزوّدو البريد الإلكتروني

المزوّدون الموصى بهم

Resend - واجهة برمجة تطبيقات بريد إلكتروني ملائمة للمطوّرين

npm install resend
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

await resend.emails.send({
  from: 'noreply@yourdomain.com',
  to: 'user@example.com',
  subject: 'Welcome',
  html: emailHtml,
});

SendGrid - منصة بريد إلكتروني شاملة

npm install @sendgrid/mail
import sgMail from '@sendgrid/mail';

sgMail.setApiKey(process.env.SENDGRID_API_KEY);

await sgMail.send({
  to: 'user@example.com',
  from: 'noreply@yourdomain.com',
  subject: 'Welcome',
  html: emailHtml,
});

Postmark - بريد إلكتروني معاملاتي سريع

npm install postmark

الإشعارات داخل التطبيق

نظام الإشعارات

أرسل إشعارات داخل التطبيق إلى المستخدمين:

import { createNotification } from '~/lib/notifications';

await createNotification({
  userId: user.id,
  title: 'New Message',
  message: 'You have a new message from John',
  type: 'info',
  link: '/messages/123',
});

أنواع الإشعارات

type NotificationType = 'info' | 'success' | 'warning' | 'error';

await createNotification({
  userId: user.id,
  title: 'Payment Successful',
  message: 'Your subscription has been renewed',
  type: 'success',
});

جلب الإشعارات

import { getUserNotifications } from '~/lib/notifications';

const notifications = await getUserNotifications(userId, {
  limit: 10,
  unreadOnly: true,
});

التعليم كمقروء

import { markNotificationAsRead } from '~/lib/notifications';

await markNotificationAsRead(notificationId);

الإشعارات الفورية

استخدم Supabase Realtime لإرسال الإشعارات بشكل فوري:

'use client';

import { useEffect } from 'react';
import { useSupabase } from '@kit/supabase/hooks/use-supabase';

export function NotificationListener() {
  const supabase = useSupabase();

  useEffect(() => {
    const channel = supabase
      .channel('notifications')
      .on(
        'postgres_changes',
        {
          event: 'INSERT',
          schema: 'public',
          table: 'notifications',
          filter: `user_id=eq.${userId}`,
        },
        (payload) => {
          // Show toast notification
          toast.info(payload.new.title);
        }
      )
      .subscribe();

    return () => {
      supabase.removeChannel(channel);
    };
  }, [supabase]);

  return null;
}

أفضل ممارسات قوالب البريد الإلكتروني

  1. اجعلها بسيطة - نص عادي وحدّ أدنى من HTML
  2. متجاوبة مع الأجهزة المحمولة - تُقرأ معظم الرسائل على الأجهزة المحمولة
  3. دعوات واضحة لاتخاذ إجراء - اجعل أزرار الإجراءات بارزة
  4. أضف لمسة شخصية - استخدم اسم المستخدم والبيانات ذات الصلة
  5. اختبر طريقة العرض - تحقّق منها عبر برامج البريد الإلكتروني المختلفة
  6. ضمّن نسخة نصية - وفّر دائمًا بديلًا نصيًا
  7. رابط إلغاء الاشتراك - مطلوب في الرسائل التسويقية

اختبار رسائل البريد الإلكتروني

التطوير المحلي

أثناء التطوير، يلتقط InBucket رسائل البريد الإلكتروني:

http://localhost:54324

معاينة رسائل البريد الإلكتروني

استخدم React Email لمعاينة القوالب:

npm run email:dev

تفضّل بزيارة http://localhost:3001 لمشاهدة معاينات الرسائل.

نصائح لضمان وصول الرسائل

  1. فعّل مصادقة نطاقك - اضبط سجلات SPF وDKIM وDMARC
  2. هيّئ سمعة نطاقك تدريجيًا - ابدأ بأحجام إرسال منخفضة
  3. راقب معدلات الارتداد - أبقِها دون 5%
  4. تجنّب محفّزات تصفية الرسائل المزعجة - لا تكتب بأحرف كبيرة بالكامل ولا تُفرط في علامات الترقيم
  5. قدّم قيمة حقيقية - لا ترسل إلا رسائل ملائمة ومفيدة
  6. سهولة إلغاء الاشتراك - اجعله ممكنًا بنقرة واحدة