Konvertering af rå e‑mail‑kroppe til sammenlignelige strenge er et almindeligt behov, når man bygger spamfiltre, ticketsystemer eller automatiske svargeneratorer. Aspose.Email Cloud SDK for Node.js leverer et kraftfuldt API, der gør sammenligning af tekst i e‑mails i Node.JS ligetil i Node.js‑applikationer. I denne vejledning vil du lære, hvordan du opsætter SDK’en, kører et komplet kodeeksempel, der læser .EML‑filer, udfører batch‑sammenligningskontroller, finjusterer tærskler og påkalder den samme operation via REST cURL‑kald.

Sammenlign tekst i e‑mails i Node.JS i 5 trin

Dette tutorial viser, hvordan du sammenligner tekst i e‑mails i Node.JS ved hjælp af Aspose.Email Cloud SDK.

  1. Installer SDK’en og konfigurer legitimationsoplysninger: Tilføj pakken til dit projekt og opret et Configuration‑objekt med dit klient‑ID og din hemmelighed.
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. Indlæs kilde- og mål EML filer: Brug fs.readFileSync til at læse de rå bytes fra hver e‑mail.
const fs = require('fs');
function readEmailFile(filePath) {
    return fs.readFileSync(filePath);
}
  1. Indstil sammenligningsindstillinger: Opret en CompareOptions‑instans og konfigurer flag som ignoreCase, ignoreWhitespace og similarityThreshold.
const { CompareOptions } = require('asposeemailcloud');
const compareOpts = new CompareOptions();
compareOpts.ignoreCase = true;
compareOpts.ignoreWhitespace = true;
compareOpts.ignorePunctuation = false;
compareOpts.similarityThreshold = 0.8; // 80%
  1. Udfør sammenligningsoperationen: Kald emailApi.compare med de forberedte indstillinger. Svaret indeholder similarity (0‑1) og isSimilar (boolean).
compareOpts.leftEmail = leftBytes;
compareOpts.rightEmail = rightBytes;
const result = await emailApi.compare(compareOpts);
console.log(`Similarity: ${result.similarity}, IsSimilar: ${result.isSimilar}`);
  1. Behandl batchresultater: Gennemgå en mappe med e-mails, sammenlign hver fil med en reference-e-mail, og log resultaterne.
    For flere detaljer om API’et, se Email API Reference.

Fuldt fungerende eksempel på e‑mail‑tekst sammenligning i Node.JS

Følgende kode demonstrerer, hvordan du sammenligner tekst i e‑mails i Node.JS med en enkelt funktion, der håndterer både enkelt‑ og batch‑sammenligninger.

// 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);
    }
})();

Bemærk: Dette kodeeksempel demonstrerer kernefunktionaliteten. Før du bruger det i dit projekt, skal du sikre dig, at du opdaterer alle filstier og konfigurationsværdier, så de matcher dit faktiske miljø, bekræfter at alle nødvendige afhængigheder er korrekt installeret, og tester grundigt i dit udviklingsmiljø. Hvis du støder på problemer, så henvis til den officielle dokumentation eller kontakt supportteamet for assistance.

Sammenlign e‑mail‑tekst via REST API ved hjælp af cURL

Den samme sammenligning kan udføres med direkte REST‑kald. Nedenfor er et minimalt workflow.

  1. Hent en adgangstoken (erstat pladsholderne med dine legitimationsoplysninger).
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. Upload den venstre e‑mail (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. Upload den rigtige e‑mail (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. Udfør sammenligningsoperationen med ønskede indstillinger.
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
         }'

Svaret returnerer similarity og isSimilar. For flere detaljer, se den officielle API-dokumentation(den officielle API-dokumentation).

Installation og konfiguration af Aspose.Email Cloud SDK for Node.JS

Installer biblioteket via npm og verificer downloadkilden.

npm install @asposecloud/aspose-email-cloud

Du kan også klone kildekoden fra GitHub-repositoriet: Aspose.Email Cloud SDK for Node.js.
Sørg for, at din runtime er Node.js 14 eller nyere, og at du har en gyldig Aspose Cloud‑konto med klientoplysninger.

Konfiguration af sammenligningsindstillinger for e-mail-tekstens lighed

SDK’en eksponerer flere flag, der påvirker similaritetsalgoritmen:

  • ignoreCase - Når true, ignorerer sammenligningen store og små bogstaver.
  • ignoreWhitespace - Springer over mellemrum, linjeskift og tabulatorer.
  • ignorePunctuation - Fjerner tegnsætningskarakterer før sammenligningen.
  • similarityThreshold - En værdi mellem 0 og 1, der definerer grænsen for, hvornår to e‑mails betragtes som lignende.

Du kan justere disse indstillinger direkte på CompareOptions‑objektet som vist i kodeeksemplerne ovenfor. For en komplet liste over parametre, se Email API Reference.

Afsluttende tanker

Integration af e‑mail‑tekstlignende kontrol i en Node.js‑backend er nu kun få linjer kode væk takket være Aspose.Email Cloud SDK for Node.js. Ved at konfigurere sammenligningsindstillingerne kan du tilpasse algoritmen til dit specifikke brugsscenarie, uanset om du har brug for streng matchning eller en mere tolerant lighedsscore. Husk, at produktionsimplementeringer kræver en korrekt licens; du kan se prisoplysninger på produktsiden og få en midlertidig licens fra den midlertidige licensside. Med SDK’en kan du nemt sammenligne tekst i e‑mails i Node.JS og skalere løsningen til at håndtere store mængder.

Almindelige spørgsmål

  • Hvad er den bedste måde at håndtere forskellige e‑mail‑kodninger, når man bruger compare‑tekst i e‑mails i Node.JS?
    SDK’en registrerer automatisk UTF‑8, UTF‑16 og andre almindelige kodninger. Hvis du støder på et ikke‑understøttet format, skal du konvertere beskeden til UTF‑8, før du sender den til compare‑metoden. Se den officielle dokumentation for konverteringshjælpemidler.

  • Kan jeg sammenligne e‑mail‑kroppe uden vedhæftede filer?
    Ja. compare‑operationen fungerer kun på den rå e‑mail‑indhold. Vedhæftede filer ignoreres, medmindre du eksplicit udtrækker og sammenligner dem separat.

  • Hvordan øger jeg ydeevnen for store batcher?
    Brug worker‑pool‑mønsteret vist i eksempel­koden og juster concurrency‑variablen. Overvej også at uploade filer til Aspose Cloud storage én gang og genbruge de gemte referencer til flere sammenligninger.

  • Er der en grænse for størrelsen på e‑mails, jeg kan sammenligne?
    Cloud‑tjenesten accepterer e‑mails på op til 10 MB hver. Større beskeder bør opdeles eller trimmes, før de sammenlignes.

Fortsæt med at udforske