Skip to content

mail-parser-wasm-worker

NOTE

اگر از ارسال مجدد webhook یا ربات تلگرام برای دریافت ایمیل استفاده می‌کنید، اما محتوای ایمیل نامفهوم است یا قابل تجزیه نیست، و نیاز به تجزیه و تحلیل بهتری دارید، می‌توانید از این قابلیت استفاده کنید.

استقرار از طریق رابط کاربری

  1. دانلود worker-with-wasm-mail-parser.zip

  2. به Overview برگردید، ورکری که ایجاد کرده‌اید را پیدا کنید، روی Edit Code کلیک کنید، فایل‌های قبلی را حذف کنید، فایل‌های worker.js و فایل با پسوند wasm را آپلود کنید، سپس روی Deploy کلیک کنید

    NOTE

    برای آپلود ابتدا باید روی منوی Explorer در سمت چپ کلیک کنید، در پنجره لیست فایل‌ها، روی دکمه راست ماوس کلیک کنید و از منوی راست کلیک گزینه Upload را انتخاب کنید، لطفاً به تصاویر زیر مراجعه کنید

    مرجع: issues156

    worker2worker-upload

استقرار از طریق خط فرمان

تغییر کد

bash
cd worker
pnpm add mail-parser-wasm-worker

فایل worker/src/common.ts را ویرایش کنید، کامنت این بخش کد را بردارید تا از mail-parser-wasm-worker برای تجزیه ایمیل استفاده شود

ts
export const commonParseMail = async (raw_mail: string | undefined | null): Promise<{
    sender: string,
    subject: string,
    text: string,
    html: string
} | undefined> => {
    if (!raw_mail) {
        return undefined;
    }
    // کامنت این بخش کد را بردارید تا از mail-parser-wasm-worker برای تجزیه ایمیل استفاده شود - شروع
    // TODO: WASM parse email
    try {
        const { parse_message_wrapper } = await import('mail-parser-wasm-worker');

        const parsedEmail = parse_message_wrapper(raw_mail);
        return {
            sender: parsedEmail.sender || "",
            subject: parsedEmail.subject || "",
            text: parsedEmail.text || "",
            headers: parsedEmail.headers || [],
            html: parsedEmail.body_html || "",
        };
    } catch (e) {
        console.error("Failed use mail-parser-wasm-worker to parse email", e);
    }
    // کامنت این بخش کد را بردارید تا از mail-parser-wasm-worker برای تجزیه ایمیل استفاده شود - پایان
    try {
        const { default: PostalMime } = await import('postal-mime');
        const parsedEmail = await PostalMime.parse(raw_mail);
        return {
            sender: parsedEmail.from ? `${parsedEmail.from.name} <${parsedEmail.from.address}>` : "",
            subject: parsedEmail.subject || "",
            text: parsedEmail.text || "",
            html: parsedEmail.html || "",
        };
    }
    catch (e) {
        console.error("Failed use PostalMime to parse email", e);
    }
    return undefined;
}

استقرار

bash
cd worker
pnpm run deploy

منتشر شده تحت مجوز MIT