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.
- Telepítse az SDK-t és konfigurálja a hitelesítő adatokat: Adja hozzá a csomagot a projektjéhez, és hozzon létre egy
Configurationobjektumot 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);
- 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);
}
- Állítsa be az összehasonlítási beállításokat: Hozzon létre egy
CompareOptionspéldányt, és konfigurálja a zászlókat, például azignoreCase,ignoreWhitespaceés asimilarityThresholdértékeket.
const { CompareOptions } = require('asposeemailcloud');
const compareOpts = new CompareOptions();
compareOpts.ignoreCase = true;
compareOpts.ignoreWhitespace = true;
compareOpts.ignorePunctuation = false;
compareOpts.similarityThreshold = 0.8; // 80%
- 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 asimilarity(0‑1) és azisSimilar(boolean) értékeket.
compareOpts.leftEmail = leftBytes;
compareOpts.rightEmail = rightBytes;
const result = await emailApi.compare(compareOpts);
console.log(`Similarity: ${result.similarity}, IsSimilar: ${result.isSimilar}`);
- 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.
- 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"
- 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
- 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
- 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és1kö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á acomparemetó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. Acomparemű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 aconcurrencyvá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.