Az e‑mail nyers törzsének összehasonlítható karakterláncokká alakítása gyakori igény spam szűrők, jegyrendszerek vagy automatikus válaszgenerátorok építésekor. Aspose.Email Cloud SDK for Node.js egy erőteljes API‑t biztosít, amely megkönnyíti a szöveg összehasonlítása e‑mailekben Node.JS‑ben a Node.js alkalmazásokban. Ebben az útmutatóban megtanulja, hogyan állítsa be az SDK‑t, futtasson egy teljes kódmintát, amely .EML fájlokat olvas, kötegelt hasonlósági ellenőrzéseket végez, finomhangolja a küszöbértékeket, és ugyanazt a műveletet REST cURL hívásokkal is meghívja.

Szöveg összehasonlítása e-mailekben Node.JS-ben 5 lépésben

Ez a bemutató megmutatja, hogyan hasonlítható össze a szöveg e-mailekben Node.JS-ben az Aspose.Email Cloud SDK használatával.

  1. Telepítse az SDK-t és konfigurálja a hitelesítő adatokat: Adja hozzá a csomagot a projektjéhez, és hozzon létre egy Configuration objektumot a kliensazonosítóval és titkkal.
const { EmailApi, Configuration } = require('asposeemailcloud');
const config = new Configuration({
    clientId: process.env.ASPose_CLIENT_ID || 'YOUR_CLIENT_ID',
    clientSecret: process.env.ASPose_CLIENT_SECRET || 'YOUR_CLIENT_SECRET'
});
const emailApi = new EmailApi(config);
  1. Töltse be a forrás és a cél EML fájlokat: Használja a fs.readFileSync-et az egyes e‑mailek nyers bájtjainak beolvasásához.
const fs = require('fs');
function readEmailFile(filePath) {
    return fs.readFileSync(filePath);
}
  1. Állítsa be az összehasonlítási beállításokat: Hozzon létre egy CompareOptions példányt, és konfigurálja a zászlókat, például az ignoreCase, ignoreWhitespace és a similarityThreshold értékeket.
const { CompareOptions } = require('asposeemailcloud');
const compareOpts = new CompareOptions();
compareOpts.ignoreCase = true;
compareOpts.ignoreWhitespace = true;
compareOpts.ignorePunctuation = false;
compareOpts.similarityThreshold = 0.8; // 80%
  1. A hasonlítási művelet végrehajtása: Hívja meg a emailApi.compare-t az előkészített beállításokkal. A válasz tartalmazza a similarity (0‑1) és az isSimilar (boolean) értékeket.
compareOpts.leftEmail = leftBytes;
compareOpts.rightEmail = rightBytes;
const result = await emailApi.compare(compareOpts);
console.log(`Similarity: ${result.similarity}, IsSimilar: ${result.isSimilar}`);
  1. Kötegelt eredmények feldolgozása: Iteráljon egy e-mailek mappáján, hasonlítsa össze minden fájlt egy referencia e-maillel, és naplózza az eredményeket.
    További részletekért az API-val kapcsolatban, tekintse meg az Email API referencia hivatkozást.

Teljes működő példa az e‑mail szöveg összehasonlításához Node.JS-ben

Az alábbi kód bemutatja, hogyan lehet e‑mail szövegeket összehasonlítani Node.JS-ben egyetlen függvénnyel, amely kezeli az egyedi és a kötegelt összehasonlításokat is.

// Compare Text in Emails using Aspose.Email Cloud SDK for Node.js

const fs = require('fs');
const path = require('path');
const { EmailApi, CompareOptions, Configuration } = require('asposeemailcloud');

// -----------------------------------------------------------------------------
// Configuration – replace with your Aspose Cloud credentials
// -----------------------------------------------------------------------------
const config = new Configuration({
    clientId: process.env.ASPose_CLIENT_ID || 'YOUR_CLIENT_ID',
    clientSecret: process.env.ASPose_CLIENT_SECRET || 'YOUR_CLIENT_SECRET'
});
const emailApi = new EmailApi(config);

// -----------------------------------------------------------------------------
// Helper: read an .eml file and return its raw bytes (Buffer)
// -----------------------------------------------------------------------------
function readEmailFile(filePath) {
    return fs.readFileSync(filePath);
}

// -----------------------------------------------------------------------------
// Compare two email bodies and return similarity (0‑1)
// -----------------------------------------------------------------------------
async function compareEmailTexts(leftPath, rightPath, options) {
    const leftBytes = readEmailFile(leftPath);
    const rightBytes = readEmailFile(rightPath);

const compareOpts = new CompareOptions();
    compareOpts.leftEmail = leftBytes;
    compareOpts.rightEmail = rightBytes;
    compareOpts.ignoreCase = options.ignoreCase ?? true;
    compareOpts.ignoreWhitespace = options.ignoreWhitespace ?? true;
    compareOpts.ignorePunctuation = options.ignorePunctuation ?? false;
    compareOpts.similarityThreshold = options.similarityThreshold ?? 0.8; // default 80%

// API call – returns { similarity: number, isSimilar: boolean }
    const result = await emailApi.compare(compareOpts);
    return result;
}

// -----------------------------------------------------------------------------
// Batch processing – compare a reference email against many others
// -----------------------------------------------------------------------------
// Performance tip: limit parallelism to avoid overwhelming the service.
// Here we process 5 emails concurrently.
async function batchCompare(referenceEmailPath, emailsFolder, options) {
    const files = fs.readdirSync(emailsFolder)
        .filter(f => f.toLowerCase().endsWith('.eml'))
        .map(f => path.join(emailsFolder, f));

const concurrency = 5;
    let index = 0;
    const results = [];

async function worker() {
        while (true) {
            const i = index++;
            if (i >= files.length) break;
            const targetPath = files[i];
            try {
                const res = await compareEmailTexts(referenceEmailPath, targetPath, options);
                results.push({
                    target: path.basename(targetPath),
                    similarity: res.similarity,
                    isSimilar: res.isSimilar
                });
                console.log(`[${path.basename(targetPath)}] Similarity: ${res.similarity.toFixed(3)} – ${res.isSimilar ? 'Similar' : 'Different'}`);
            } catch (err) {
                console.error(`Error comparing ${targetPath}:`, err.message);
            }
        }
    }

// launch workers
    const workers = [];
    for (let i = 0; i < concurrency; i++) workers.push(worker());
    await Promise.all(workers);
    return results;
}

// -----------------------------------------------------------------------------
// Main execution
// -----------------------------------------------------------------------------
(async () => {
    try {
        const referenceEmail = path.resolve(__dirname, 'reference.eml'); // reference email
        const emailsDir = path.resolve(__dirname, 'emails'); // folder with .eml files to compare

const compareOptions = {
            ignoreCase: true,
            ignoreWhitespace: true,
            ignorePunctuation: false,
            similarityThreshold: 0.75 // 75% similarity required to be considered similar
        };

console.log('Starting batch comparison...');
        const batchResults = await batchCompare(referenceEmail, emailsDir, compareOptions);

// Example: summarize results
        const similarCount = batchResults.filter(r => r.isSimilar).length;
        console.log(`\nBatch completed. ${similarCount} out of ${batchResults.length} emails are similar to the reference.`);
    } catch (err) {
        console.error('Unexpected error:', err);
    }
})();

Megjegyzés: Ez a kódrészlet a fő funkciót mutatja be. Mielőtt a projektjében használná, győződjön meg arról, hogy frissítette az összes fájlútvonalat és konfigurációs értéket, hogy megfeleljen a tényleges környezetnek, ellenőrizze, hogy minden szükséges függőség megfelelően telepítve van, és alaposan tesztelje a fejlesztői környezetben. Ha problémákba ütközik, kérjük, tekintse meg a hivatalos dokumentációt vagy lépjen kapcsolatba a támogatási csapattal segítségért.

E-mail szöveg összehasonlítása REST API-n keresztül cURL használatával

Az ugyanaz az összehasonlítás közvetlen REST hívásokkal is elvégezhető. Az alábbi egy minimális munkafolyamat.

  1. Szerezzen hozzáférési tokent (cserélje ki a helyőrzőket a hitelesítő adataira).
curl -X POST "https://api.aspose.cloud/connect/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. Töltsd fel a bal e-mailt (left.eml).
curl -X PUT "https://api.aspose.cloud/v4.0/email/storage/file/left.eml" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary @left.eml
  1. Töltsd fel a megfelelő e-mailt (right.eml).
curl -X PUT "https://api.aspose.cloud/v4.0/email/storage/file/right.eml" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary @right.eml
  1. Hajtsa végre az összehasonlítási műveletet a kívánt beállításokkal.
curl -X POST "https://api.aspose.cloud/v4.0/email/compare" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "leftEmail": "left.eml",
           "rightEmail": "right.eml",
           "ignoreCase": true,
           "ignoreWhitespace": true,
           "ignorePunctuation": false,
           "similarityThreshold": 0.75
         }'

A válasz visszaadja a similarity és az isSimilar értékeket. További részletekért lásd a hivatalos API dokumentációt.

Telepítés és konfigurálás Aspose.Email Cloud SDK for Node.JS

Telepítse a könyvtárat npm segítségével, és ellenőrizze a letöltés forrását.

npm install @asposecloud/aspose-email-cloud

Az alábbiakban a forrást is klónozhatja a GitHub tárolóból: Aspose.Email Cloud SDK for Node.js.
Győződjön meg arról, hogy a futtatókörnyezete Node.js 14 vagy újabb, és hogy rendelkezik érvényes Aspose Cloud fiókkal ügyfélhitelesítő adatokkal.

Az e‑mail szöveg hasonlóságának összehasonlítási beállításainak konfigurálása

Az SDK több jelzőt tesz elérhetővé, amelyek befolyásolják a hasonlósági algoritmust:

  • ignoreCase - Ha true, az összehasonlítás figyelmen kívül hagyja a kis- és nagybetűk különbségét.
  • ignoreWhitespace - Kihagyja a szóközöket, sortöréseket és tabulátorokat.
  • ignorePunctuation - Az összehasonlítás előtt eltávolítja az írásjeleket.
  • similarityThreshold - Egy 0 és 1 közötti érték, amely meghatározza a küszöböt két e‑mail hasonlóságának megítéléséhez.

Az opciókat közvetlenül a CompareOptions objektumban állíthatja be, ahogyan a fenti kódrészletekben látható. A paraméterek teljes listájáért tekintse meg az Email API Referenciája hivatkozást.

Záró gondolatok

Az e‑mail szöveg hasonlóságának ellenőrzését egy Node.js háttérben most néhány kódsorral megvalósíthatja, köszönhetően a Aspose.Email Cloud SDK for Node.js. Az összehasonlítási beállítások konfigurálásával testre szabhatja az algoritmust a konkrét felhasználási esethez, legyen szó szigorú egyezésről vagy toleránsabb hasonlósági pontszámról. Ne feledje, hogy a termelési környezetben megfelelő licenc szükséges; a termékoldalon megtekintheti az árakat, és ideiglenes licencet szerezhet a ideiglenes licenc oldal. Az SDK-val egyszerűen összehasonlíthatja az e‑mailek szövegét Node.JS-ben és a megoldást skálázhatja nagy mennyiség kezelésére.

Gyakori kérdések

  • Mi a legjobb módja a különböző e‑mail kódolások kezelésének a compare text használatakor e‑mailben Node.JS‑ben?
    Az SDK automatikusan felismeri az UTF‑8, UTF‑16 és más gyakori kódolásokat. Ha nem támogatott formátummal találkozik, konvertálja az üzenetet UTF‑8 formátumba, mielőtt átadná a compare metódusnak. Lásd a hivatalos dokumentációt a konverziós segédeszközökhöz.

  • Összehasonlíthatom az e‑mail törzseket mellékletek nélkül?
    Igen. A compare művelet csak a nyers e‑mail tartalmon működik. A mellékletek figyelmen kívül maradnak, hacsak nem vonja ki őket kifejezetten, és nem hasonlítja össze külön.

  • Hogyan növelhetem a teljesítményt nagy kötegek esetén?
    Használja a mintakódban bemutatott worker‑pool mintát, és állítsa be a concurrency változót. Emellett fontolja meg a fájlok egyszeri feltöltését az Aspose Cloud tárolóba, és a tárolt hivatkozások újrahasználatát több összehasonlításhoz.

  • Van korlátja annak, hogy mekkora méretű e‑maileket hasonlíthatok össze?
    A felhőszolgáltatás legfeljebb 10 MB méretű e‑maileket fogad egyenként. A nagyobb üzeneteket fel kell osztani vagy rövidíteni az összehasonlítás előtt.

Folytassa a felfedezést