Η μετατροπή των ακατέργαστων σωμάτων email σε συγκρίσιμες συμβολοσειρές είναι μια κοινή ανάγκη κατά την ανάπτυξη φίλτρων spam, συστημάτων ticketing ή αυτόματων δημιουργών απαντήσεων. Aspose.Email Cloud SDK for Node.js παρέχει ένα ισχυρό API που καθιστά τη σύγκριση κειμένου σε email σε Node.JS απλή σε εφαρμογές Node.js. Σε αυτόν τον οδηγό θα μάθετε πώς να ρυθμίσετε το SDK, να εκτελέσετε ένα πλήρες δείγμα κώδικα που διαβάζει αρχεία .EML, να πραγματοποιήσετε ελέγχους ομαδικής ομοιότητας, να ρυθμίσετε ακριβώς τα όρια και να καλέσετε την ίδια λειτουργία μέσω κλήσεων REST cURL.

Συγκρίνετε Κείμενο σε Emails σε Node.JS σε 5 Βήματα

Αυτό το tutorial δείχνει πώς να συγκρίνετε κείμενο σε emails σε Node.JS χρησιμοποιώντας το Aspose.Email Cloud SDK.

  1. Εγκαταστήστε το SDK και διαμορφώστε τα διαπιστευτήρια: Προσθέστε το πακέτο στο έργο σας και δημιουργήστε ένα αντικείμενο Configuration με το client ID και το secret σας.
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. Φορτώστε τα πηγαία και προορισμού αρχεία EML: Χρησιμοποιήστε fs.readFileSync για να διαβάσετε τα ακατέργαστα byte κάθε email.
const fs = require('fs');
function readEmailFile(filePath) {
    return fs.readFileSync(filePath);
}
  1. Ορίστε επιλογές σύγκρισης: Δημιουργήστε μια παρουσία CompareOptions και διαμορφώστε τις σημαίες όπως ignoreCase, ignoreWhitespace και similarityThreshold.
const { CompareOptions } = require('asposeemailcloud');
const compareOpts = new CompareOptions();
compareOpts.ignoreCase = true;
compareOpts.ignoreWhitespace = true;
compareOpts.ignorePunctuation = false;
compareOpts.similarityThreshold = 0.8; // 80%
  1. Εκτελέστε τη λειτουργία σύγκρισης: Καλέστε το emailApi.compare με τις προετοιμασμένες επιλογές. Η απάντηση περιέχει το similarity (0‑1) και το isSimilar (boolean).
compareOpts.leftEmail = leftBytes;
compareOpts.rightEmail = rightBytes;
const result = await emailApi.compare(compareOpts);
console.log(`Similarity: ${result.similarity}, IsSimilar: ${result.isSimilar}`);
  1. Επεξεργασία αποτελεσμάτων δέσμης: Διέλθετε έναν φάκελο με email, συγκρίνετε κάθε αρχείο με ένα email αναφοράς και καταγράψτε τα αποτελέσματα.
    Για περισσότερες λεπτομέρειες σχετικά με το API, ανατρέξτε στην Αναφορά API Email.

Πλήρες Παράδειγμα Λειτουργίας για Σύγκριση Κειμένου Email σε Node.JS

Ο παρακάτω κώδικας δείχνει πώς να συγκρίνετε κείμενο σε email σε Node.JS με μια ενιαία συνάρτηση που διαχειρίζεται τόσο μεμονωμένες όσο και ομαδικές συγκρίσεις.

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

Σημείωση: Αυτό το παράδειγμα κώδικα δείχνει τη βασική λειτουργικότητα. Πριν το χρησιμοποιήσετε στο έργο σας, βεβαιωθείτε ότι έχετε ενημερώσει τυχόν διαδρομές αρχείων και τιμές ρυθμίσεων ώστε να ταιριάζουν με το πραγματικό σας περιβάλλον, επαληθεύστε ότι όλες οι απαιτούμενες εξαρτήσεις είναι σωστά εγκατεστημένες και δοκιμάστε εκτενώς στο περιβάλλον ανάπτυξής σας. Εάν αντιμετωπίσετε προβλήματα, παρακαλούμε ανατρέξτε στην επίσημη τεκμηρίωση ή επικοινωνήστε με την ομάδα υποστήριξης για βοήθεια.

Σύγκριση κειμένου email μέσω REST API χρησιμοποιώντας cURL

Η ίδια σύγκριση μπορεί να εκτελεστεί με άμεσες κλήσεις REST. Παρακάτω είναι μια ελάχιστη ροή εργασίας.

  1. Αποκτήστε ένα διακριτικό πρόσβασης (αντικαταστήστε τα σύμβολα κράτησης θέσης με τα διαπιστευτήριά σας).
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. Ανεβάστε το αριστερό email (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. Ανεβάστε το σωστό email (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. Εκτελέστε τη λειτουργία σύγκρισης με τις επιθυμητές επιλογές.
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
         }'

Η απάντηση επιστρέφει τις τιμές similarity και isSimilar. Για περισσότερες λεπτομέρειες, δείτε την επίσημη τεκμηρίωση API.

Εγκατάσταση και Διαμόρφωση Aspose.Email Cloud SDK for Node.JS

Εγκαταστήστε τη βιβλιοθήκη μέσω npm και επαληθεύστε την πηγή λήψης.

npm install @asposecloud/aspose-email-cloud

Μπορείτε επίσης να κλωνοποιήσετε τον πηγαίο κώδικα από το αποθετήριο GitHub: Aspose.Email Cloud SDK for Node.js.
Βεβαιωθείτε ότι το περιβάλλον εκτέλεσής σας είναι Node.js 14 ή νεότερο και ότι διαθέτετε έγκυρο λογαριασμό Aspose Cloud με διαπιστευτήρια πελάτη.

Διαμόρφωση επιλογών σύγκρισης για ομοιότητα κειμένου email

Το SDK εκθέτει αρκετές σημαίες που επηρεάζουν τον αλγόριθμο ομοιότητας:

  • ignoreCase - Όταν true, η σύγκριση αγνοεί τη διάκριση πεζών‑κεφαλαίων.
  • ignoreWhitespace - Παραλείπει κενά, αλλαγές γραμμής και καρτέλες.
  • ignorePunctuation - Αφαιρεί χαρακτήρες στίξης πριν τη σύγκριση.
  • similarityThreshold - Μια τιμή μεταξύ 0 και 1 που ορίζει το όριο για το αν θεωρούνται δύο email παρόμοια.

Μπορείτε να προσαρμόσετε αυτές τις επιλογές απευθείας στο αντικείμενο CompareOptions, όπως φαίνεται στα παραπάνω αποσπάσματα κώδικα. Για μια πλήρη λίστα παραμέτρων, ανατρέξτε στην Αναφορά API Email.

Τελικές Σκέψεις

Η ενσωμάτωση ελέγχων ομοιότητας κειμένου email σε ένα backend Node.js είναι πλέον λίγες γραμμές κώδικα μακριά, χάρη στο Aspose.Email Cloud SDK for Node.js. Διαμορφώνοντας τις επιλογές σύγκρισης, μπορείτε να προσαρμόσετε τον αλγόριθμο στη συγκεκριμένη περίπτωση χρήσης, είτε χρειάζεστε αυστηρή αντιστοίχιση είτε μια πιο ανεκτική βαθμολογία ομοιότητας. Θυμηθείτε ότι οι παραγωγικές αναπτύξεις απαιτούν κατάλληλη άδεια· μπορείτε να δείτε τις λεπτομέρειες τιμολόγησης στη σελίδα του προϊόντος και να αποκτήσετε προσωρινή άδεια από τη σελίδα προσωρινής άδειας. Με το SDK μπορείτε εύκολα συγκρίνετε κείμενο σε email σε Node.JS και να κλιμακώσετε τη λύση για να διαχειρίζεται μεγάλα όγκους.

Συχνές Ερωτήσεις

  • Ποιος είναι ο καλύτερος τρόπος για να διαχειριστείτε διαφορετικές κωδικοποιήσεις email όταν χρησιμοποιείτε σύγκριση κειμένου σε email σε Node.JS;
    Το SDK εντοπίζει αυτόματα UTF‑8, UTF‑16 και άλλες κοινές κωδικοποιήσεις. Εάν αντιμετωπίσετε ένα μη υποστηριζόμενο φορμά, μετατρέψτε το μήνυμα σε UTF‑8 πριν το περάσετε στη μέθοδο compare. Δείτε την επίσημη τεκμηρίωση για βοηθητικά εργαλεία μετατροπής.

  • Μπορώ να συγκρίνω τα σώματα των email χωρίς συνημμένα;
    Ναι. Η λειτουργία compare λειτουργεί μόνο στο ακατέργαστο περιεχόμενο του email. Τα συνημμένα αγνοούνται εκτός εάν τα εξάγετε ρητά και τα συγκρίνετε ξεχωριστά.

  • Πώς μπορώ να αυξήσω την απόδοση για μεγάλες παρτίδες;
    Χρησιμοποιήστε το πρότυπο worker‑pool που εμφανίζεται στον κώδικα παραδείγματος και ρυθμίστε τη μεταβλητή concurrency. Επίσης, σκεφτείτε να ανεβάζετε τα αρχεία στο Aspose Cloud storage μία φορά και να επαναχρησιμοποιείτε τις αποθηκευμένες αναφορές για πολλαπλές συγκρίσεις.

  • Υπάρχει όριο στο μέγεθος των email που μπορώ να συγκρίνω;
    Η υπηρεσία cloud δέχεται email έως 10 MB το καθένα. Τα μεγαλύτερα μηνύματα πρέπει να χωριστούν ή να περικοπούν πριν από τη σύγκριση.

Συνεχίστε την εξερεύνηση