ნედლეული ელ‑ფოსტის სხეულების შედარებად სტრინგებად გარდაქმნა საერთო მოთხოვნაა, როდესაც ქმნიან სპამის ფილტრებს, ბილეთების სისტემებს ან ავტომატურ პასუხის გენერატორებს. Aspose.Email Cloud SDK for Node.js უზრუნველყოფს ძლიერი API-ს, რომელიც ელ‑ფოსტებში ტექსტის შედარება Node.JS-ში მარტივად აკეთებს Node.js აპლიკაციებში. ამ გიდში თქვენ გაიგებთ, როგორ დავაყენოთ SDK, გავუშვით სრულყოფილი კოდის მაგალითი, რომელიც .EML ფაილებს იკითხავს, შესრულდება ბაჩის მსგავსობის შემოწმება, ფინ‑ტუნდება ზღვარები და იმოქმედებთ იმავე ოპერაციაზე REST cURL მოთხოვნებით.

ელფოსტებში ტექსტის შედარება Node.JS-ში 5 ნაბიჯში

ეს გაკვეთილი აჩვენებს, როგორ შედაროთ ტექსტი ელფოსტებში Node.JS-ის გამოყენებით Aspose.Email Cloud SDK-ის საშუალებით.

  1. SDK-ის დაყენება და ავტორიზაციის დეტალების კონფიგურაცია: დაამატეთ პაკეტი თქვენს პროექტში და შექმენით Configuration ობიექტი თქვენი client ID-ისა და secret-ის kanssa.
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, რათა წაიკითხოთ თითოეული ელფოსტის ნედლი ბაიტები.
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. ბაჩის შედეგების დამუშავება: გადაატარეთ ელფოსტების ფოლდერის გავლით, შედარეთ თითოეული ფაილი მითითებული ელფოსტასთან და ჩანაწერეთ შედეგები.
    API-ის მეტი დეტალებისთვის მიმართეთ ელფოსტის API-ის მითითება.

სრული მუშაობის მაგალითი ელფოსტის ტექსტის შედარებისთვის Node.JS-ში

შემდეგი კოდი აჩვენებს, როგორ შედაროთ ელფოსტის ტექსტი 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);
    }
})();

შენიშვნა: ეს კოდის მაგალითი აჩვენებს ძირითად ფუნქციას. თქვენი პროექტში მისი გამოყენებამდე, დარწმუნდით, რომ განაახლეთ ყველა ფაილის გზა და კონფიგურაციის მნიშვნელობები, რათა დაემთხვეს თქვენს რეალურ გარემოს, გადაამოწმეთ, რომ ყველა საჭირო დამოკიდებულება სწორად დაინსტალირებულია, და სრულად გამოცადეთ თქვენი განვითარების გარემოში. თუ რაიმე პრობლემის გაგიწევთ, გთხოვთ, მიმართოთ ოფიციალურ დოკუმენტაციას ან დაუკავშირდეთ მხარდამჭერის გუნდს დახმარებისთვის.

ელექტრონული ფოსტის ტექსტის შედარება 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. ატვირთეთ მარცხენა ელფოსტა (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. ატვირთეთ სწორი ელფოსტა (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-ის დაყენება და კონფიგურაცია Node.JS-ისთვის

დაყენეთ ბიბლიოთეკა npm-ის საშუალებით და გადამოწმეთ ჩამოტვირთვის წყარო.

npm install @asposecloud/aspose-email-cloud

თქვენ ასევე შეგიძლიათ კლონი გააკეთოთ წყარო GitHub რეპოზიტორიისგან: Aspose.Email Cloud SDK for Node.js.
დარწმუნდით, რომ თქვენი გაშვების გარემო არის Node.js 14 ან უფრო ახალი და რომ გაქვთ სწორი Aspose Cloud ანგარიში კლიენტის ავტორიზაციის დეტალებით.

ელფოსტის ტექსტის მსგავსობის შედარების პარამეტრების კონფიგურაცია

SDK-ს რამდენიმე ალამია, რომელიც გავლენას ახდენს მსგავსობის ალგორითმზე:

  • ignoreCase - როდესაც true, შედარება იგნორირებს ასოების რეგისტრს.
  • ignoreWhitespace - გამოტოვებს სივრცეებს, ხაზის გადატანებს და ჩანართებს.
  • ignorePunctuation - წაშლის პუნქტუაციის სიმბოლოებს შედარებამდე.
  • similarityThreshold - მნიშვნელობა 0 და 1 შორის, რომელიც განსაზღვრავს შეზღუდვას, რათა ორი ელფოსტა ითვლეს მსგავსად.

თქვენ შეგიძლიათ პირდაპირ CompareOptions ობიექტზე ეს პარამეტრები დაარეგულიროთ, როგორც ზემოთ მოცემული კოდის ნიმუშებში ჩანს. პარამეტრების სრულ სიას იხილეთ Email API-ის დოკუმენტაცია.

საბოლოო აზრები

ელექტრონული ფოსტის ტექსტის მსგავსობის შემოწმების ინტეგრირება Node.js ბექენდინში ახლა რამდენიმე კოდის ხაზითაა, Aspose.Email Cloud SDK for Node.js-ის მადლიერებით (Aspose.Email Cloud SDK for Node.js). შედარების პარამეტრების კონფიგურირებით შეგიძლიათ ალგორითმს თქვენი კონკრეტული გამოყენების შემთხვევისთვის ადაპტირება, თუ გჭირდებათ მკაცრი დამთხვევა ან უფრო დატოლებული მსგავსების ქულა. დამახსოვრეთ, რომ პროდუქციის განთავსება სწორი ლიცენზია ითხოვს; ფასის დეტალებს შეგიძლიათ ნახოთ პროდუქტის გვერდზე და დროებით ლიცენზია მიიღოთ temporary license page. SDK-ის დახმარებით შეგიძლიათ ადვილად შედაროთ ელფოსტის ტექსტი Node.JS-ში და მასშტაბიროთ გადაწყვეტა დიდი მოცულობის დამუშავებისთვის.

საერთო კითხვები

  • რა არის საუკეთესო გზა სხვადასხვა ელ‑ფოსტის კოდირებების დამუშავებისთვის, როდესაც იყენებთ compare text‑ს ელ‑ფოსტებში Node.JS-ში?
    SDK‑ი ავტომატურად ივსის UTF‑8, UTF‑16 და სხვა საერთო კოდირებების. თუ შეხვდებით მხარდაუჭერელ ფორმატს, გადაყავით შეტყობინება UTF‑8-ზე, სანამ გადაეცემა compare მეთოდს. იხილეთ ოფიციალური დოკუმენტაცია კონვერსიის დამხმარე ინსტრუმენტებისთვის.

  • შეიძლება მეელის ბოდის შინაარსის შედარება დანართის გარეშე?
    დიახ. compare ოპერაცია მუშაობს მხოლოდ ელფოსტის ნედლეულზე. დანართები იგნორირებულია, თუ არ გამოითხოვთ მათი გამოყოფა და შედარება ცალკე.

  • როგორ გავაუმჯობესო შესრულება დიდი ბაჩებისთვის?
    გამოიყენეთ worker‑pool შაბლონი, რომელიც ნაჩვენებია ნიმუშის კოდში, და დააკონფიგურირეთ concurrency ცვლადი. ასევე გაითვალისწინეთ ფაილების ერთჯერადი ატვირთვა Aspose Cloud საცავში და შენახული მიმართვების მრავალ შედარებისთვის გამოყენება.

  • შეიძლება თუ არა ელფოსტების ზომის ლიმიტი, რომლის შედარება შეიძლება?
    ღრუბლოვანი სერვისი იღებს ელფოსტებს, რომლის ზომა არ აღემატება 10 მბ-ს თითო. უფრო დიდი შეტყობინებები უნდა იყოს გაყოფილი ან შემოჭრილი შედარებამდე.

გაგრძელეთ შესწავლა