Verifalia มอบ API ที่ใช้ HTTPS อย่างง่ายสำหรับการตรวจสอบความถูกต้องของที่อยู่อีเมลแบบเรียลไทม์และตรวจสอบว่าที่อยู่อีเมลเหล่านั้นสามารถจัดส่งได้หรือไม่ ไลบรารี SDK นี้ทำงานร่วมกับ Verifalia และอนุญาตให้ตรวจสอบที่อยู่อีเมลภายใต้แพลตฟอร์มต่อไปนี้:
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Verifalia โปรดดูที่ https://verifalia.com
วิธีที่ดีที่สุดและง่ายที่สุดในการเพิ่มไลบรารี SDK การยืนยันอีเมล Verifalia ลงในโปรเจ็กต์ .NET ของคุณคือการใช้ตัวจัดการแพ็คเกจ NuGet
จากภายใน Visual Studio คุณสามารถใช้ NuGet GUI เพื่อค้นหาและติดตั้งแพ็คเกจ Verifalia NuGet หรือเป็นทางลัด เพียงพิมพ์คำสั่งต่อไปนี้ลงใน Package Manager Console:
Install-Package Verifalia
อีกทางเลือกหนึ่งในการเพิ่ม Verifalia SDK ลงในโซลูชัน .NET ของคุณ คุณสามารถดาวน์โหลดโปรเจ็กต์ต้นทาง SDK จาก github แล้วแตกไฟล์ลงในโฟลเดอร์ที่คุณเลือก และเพิ่มการอ้างอิงจากโปรเจ็กต์ของคุณเองไปยังโปรเจ็กต์ Verifalia SDK โปรเจ็กต์ SDK เป็นโปรเจ็กต์ C# ที่สามารถอ้างอิงและใช้กับภาษา .NET อื่นๆ ได้เช่นกัน รวมถึง Visual Basic (VB.NET), C++/CLI, J#, IronPython, IronRuby, F# และ PowerShell
เรียนรู้เพิ่มเติมที่ https://verifalia.com
สิ่งแรกสุด: การรับรองความถูกต้องของ Verifalia API ดำเนินการโดยใช้ข้อมูลประจำตัวของบัญชี Verifalia หลักของคุณหรือของผู้ใช้รายใดรายหนึ่ง (ก่อนหน้านี้เรียกว่าบัญชีย่อย): หากคุณไม่มีบัญชี Verifalia เพียงลงทะเบียนสำหรับ อันฟรี ด้วยเหตุผลด้านความปลอดภัย ขอแนะนำให้สร้างและใช้ผู้ใช้เฉพาะเพื่อเข้าถึง API เสมอ เนื่องจากการทำเช่นนั้นจะทำให้สามารถกำหนดเฉพาะสิทธิ์ที่จำเป็นเฉพาะเท่านั้น
เรียนรู้เพิ่มเติมเกี่ยวกับการรับรองความถูกต้องของ Verifalia API ได้ที่ https://verifalia.com/developers#authentication
เมื่อคุณมีข้อมูลรับรอง Verifalia อยู่ในมือแล้ว ให้ใช้ข้อมูลดังกล่าวในขณะที่สร้างอินสแตนซ์ใหม่ของประเภท VerifaliaRestClient ซึ่งจะเป็นจุดเริ่มต้นสำหรับการดำเนินการอื่นๆ ทั้งหมดกับ Verifalia API: ข้อมูลประจำตัวที่ให้มาจะถูกมอบให้กับ API โดยอัตโนมัติโดยใช้ HTTP Basic วิธีการรับรองความถูกต้อง
using Verifalia . Api ;
var verifalia = new VerifaliaRestClient ( "username" , "password" ) ;นอกเหนือจากวิธี HTTP Basic Auth แล้ว SDK นี้ยังรองรับวิธีอื่นๆ ในการตรวจสอบสิทธิ์ Verifalia API ดังที่อธิบายไว้ในส่วนต่อๆ ไป
การตรวจสอบสิทธิ์ผู้ถือให้ความปลอดภัยที่สูงกว่าผ่าน HTTP Basic Auth เนื่องจากอย่างหลังจำเป็นต้องส่งข้อมูลประจำตัวจริงในการเรียก API แต่ละครั้ง ในขณะที่แบบแรกต้องการเฉพาะในคำขอตรวจสอบสิทธิ์เฉพาะครั้งแรกเท่านั้น ในอีกด้านหนึ่ง คำขอการตรวจสอบสิทธิ์ครั้งแรกที่จำเป็นสำหรับการตรวจสอบสิทธิ์ของผู้ถือจะใช้เวลาที่ไม่สำคัญ: หากคุณต้องการดำเนินการเพียงคำขอเดียว การใช้ HTTP Basic Auth จะให้ความปลอดภัยในระดับเดียวกันและเร็วกว่าด้วย
using Verifalia . Api ;
using Verifalia . Api . Security ;
var verifalia = new VerifaliaRestClient ( new BearerAuthenticationProvider ( "username" , "password" ) ) ; การจัดการการรับรองความถูกต้องแบบหลายปัจจัย (MFA) ยังสามารถทำได้โดยการกำหนดการใช้งานแบบกำหนดเองของอินเทอร์เฟซ ITotpTokenProvider ซึ่งควรใช้เพื่อรับรหัสผ่านครั้งเดียวตามเวลาจากแอปหรืออุปกรณ์ตรวจสอบความถูกต้องภายนอก: เพื่อเพิ่มการรับรองความถูกต้องแบบหลายปัจจัยไปที่ บัญชี Verifalia หลักของคุณ กำหนดการตั้งค่าความปลอดภัยของคุณ
using Verifalia . Api ;
using Verifalia . Api . Security ;
class MyTotpProvider : ITotpTokenProvider
{
public Task < string > ProvideTotpTokenAsync ( CancellationToken cancellationToken )
{
// Ask the user to type his or her TOTP token
Console . WriteLine ( "Acquire your TOTP token and type it here:" ) ;
var totpToken = Console . ReadLine ( ) ;
return Task . FromResult ( totpToken ) ;
}
}
// ...
var verifalia = new VerifaliaRestClient ( new BearerAuthenticationProvider ( "username" , "password" , new MyTotpProvider ( ) ) ) ; วิธีการตรวจสอบสิทธิ์นี้ใช้ใบรับรองไคลเอ็นต์ X.509 ที่เข้ารหัสลับเพื่อตรวจสอบสิทธิ์กับ Verifalia API ผ่านโปรโตคอล TLS วิธีการนี้เรียกอีกอย่างว่าการตรวจสอบสิทธิ์ TLS ร่วมกัน (mTLS) หรือการตรวจสอบสิทธิ์แบบสองทาง ให้การรักษาความปลอดภัยระดับสูงสุด เนื่องจากเฉพาะคีย์ที่ได้รับจากการเข้ารหัสลับเท่านั้น (ไม่ใช่ข้อมูลประจำตัวจริง) เท่านั้นที่จะถูกส่งผ่านสายในคำขอแต่ละรายการ
using Verifalia . Api ;
using Verifalia . Api . Security ;
var verifalia = new VerifaliaRestClient ( new X509Certificate2 ( "mycertificate.pem" ) ) ; การดำเนินการทุกอย่างที่เกี่ยวข้องกับการตรวจสอบ / ตรวจสอบความถูกต้องของที่อยู่อีเมลจะดำเนินการผ่านคุณสมบัติ EmailValidations ที่เปิดเผยโดยอินสแตนซ์ VerifaliaRestClient ที่คุณสร้างไว้ด้านบน คุณสมบัตินี้เต็มไปด้วยวิธีการที่มีประโยชน์ แต่ละวิธีมีการโอเวอร์โหลดจำนวนมาก: ในอีกไม่กี่ย่อหน้าถัดไป เราจะดูวิธีที่ใช้มากที่สุด ดังนั้นจึงขอแนะนำอย่างยิ่งให้สำรวจไลบรารี่และดูวิธีใช้ xmldoc ที่ฝังอยู่เพื่อหาโอกาสอื่น ๆ
ห้องสมุดจะรอโดยอัตโนมัติเพื่อให้งานการยืนยันอีเมลเสร็จสิ้น : หากจำเป็น คุณสามารถปรับเปลี่ยนตัวเลือกการรอและควบคุมกระบวนการสำรวจทั้งหมดที่เกี่ยวข้องได้มากขึ้น โปรดดูส่วนตัวเลือกการรอด้านล่างสำหรับรายละเอียดเพิ่มเติม
ในการตรวจสอบความถูกต้องของที่อยู่อีเมลจากแอปพลิเคชัน .NET คุณสามารถเรียกใช้เมธอด SubmitAsync() ได้: โดยจะยอมรับที่อยู่อีเมลหนึ่งรายการขึ้นไปและตัวเลือกการตรวจสอบในท้ายที่สุดที่คุณต้องการส่งต่อไปยัง Verifalia รวมถึงคุณภาพของผลลัพธ์ที่คาดหวัง การตั้งค่าการขจัดข้อมูลซ้ำซ้อน ลำดับความสำคัญในการประมวลผล
หมายเหตุ ในกรณีที่คุณจำเป็นต้องตรวจสอบรายชื่อที่อยู่อีเมล ขอแนะนำให้ส่งทั้งหมดในครั้งเดียวโดยใช้เมธอด
SubmitAsync()เฉพาะอย่างใดอย่างหนึ่งที่โอเวอร์โหลด (ดูหัวข้อถัดไป) แทนที่จะวนซ้ำชุดแหล่งที่มาและส่ง ที่อยู่ทีละรายการ ไม่เพียงแต่วิธีการทั้งหมดพร้อมกันจะเร็วขึ้น แต่ยังช่วยให้ตรวจจับและทำเครื่องหมายรายการที่ซ้ำกัน ซึ่งเป็นคุณลักษณะที่ไม่สามารถใช้งานได้ในขณะตรวจสอบที่อยู่อีเมลทีละรายการ
ในตัวอย่างต่อไปนี้ เราตรวจสอบที่อยู่อีเมลด้วยไลบรารีนี้ โดยใช้ตัวเลือกเริ่มต้น:
var job = await verifalia
. EmailValidations
. SubmitAsync ( "[email protected]" ) ;
// At this point the address has been validated: let's print its email validation
// result to the console.
var entry = job . Entries [ 0 ] ;
Console . WriteLine ( $ "Classification: { entry . Classification } (status: { entry . Status } )" ) ;
// Classification: Deliverable (status: Success)ตามที่คุณอาจคาดหวัง แต่ละรายการอาจมีรายละเอียดเพิ่มเติมต่างๆ เกี่ยวกับที่อยู่อีเมลที่ยืนยันแล้ว:
| คุณสมบัติ | คำอธิบาย |
|---|---|
AsciiEmailAddressDomainPart | รับส่วนโดเมนของที่อยู่อีเมล ซึ่งแปลงเป็น ASCII หากจำเป็น และลบความคิดเห็นและการเว้นวรรคสีขาวออก |
Classification | ค่า ValidationEntryClassification สำหรับรายการนี้ |
CompletedOn | วันที่รายการนี้เสร็จสมบูรณ์ หากมี |
Custom | สตริงทางเลือกแบบกำหนดเองซึ่งจะถูกส่งกลับเมื่อการตรวจสอบเสร็จสิ้น หากต้องการส่งผ่านค่าที่กำหนดเองกลับไปกลับมา ให้ใช้คุณสมบัติ Custom ของ ValidationRequestEntry |
DuplicateOf | ดัชนีที่เป็นศูนย์ของการเกิดขึ้นครั้งแรกของที่อยู่อีเมลนี้ในการ Validation หลัก ในกรณีที่ Status ของรายการนี้ Duplicate รายการที่ทำซ้ำจะไม่เปิดเผยรายละเอียดผลลัพธ์ใดๆ นอกเหนือจากนี้และค่า Custom ในท้ายที่สุด |
Index | ดัชนีของรายการนี้ภายในคอนเทนเนอร์ Validation คุณสมบัตินี้มีประโยชน์เป็นส่วนใหญ่ในกรณีที่ API ส่งคืนมุมมองที่กรองของรายการ |
InputData | สตริงอินพุตกำลังได้รับการตรวจสอบ |
EmailAddress | รับที่อยู่อีเมลโดยไม่มีความคิดเห็นหรือช่องว่างใดๆ ในท้ายที่สุด ส่งคืนค่าว่างหากข้อมูลที่ป้อนไม่ใช่ที่อยู่อีเมลที่ไม่ถูกต้องทางไวยากรณ์ |
EmailAddressDomainPart | รับส่วนโดเมนของที่อยู่อีเมล โดยไม่มีความคิดเห็นและช่องว่างสีขาว |
EmailAddressLocalPart | รับส่วนที่อยู่อีเมลในเครื่อง โดยไม่มีความคิดเห็นและช่องว่างสีขาวแบบพับ |
HasInternationalDomainName | หากเป็นจริง ที่อยู่อีเมลจะมีชื่อโดเมนสากล |
HasInternationalMailboxName | หากเป็นจริง ที่อยู่อีเมลจะมีชื่อกล่องจดหมายต่างประเทศ |
IsDisposableEmailAddress | หากเป็นจริง ที่อยู่อีเมลจะมาจากผู้ให้บริการที่อยู่อีเมลสำรอง (DEA) ที่อยู่อีเมลสำรองคืออะไร? |
IsFreeEmailAddress | หากเป็นจริง ที่อยู่อีเมลจะมาจากผู้ให้บริการที่อยู่อีเมลฟรี (เช่น gmail, yahoo, outlook / hotmail, ...) |
IsRoleAccount | หากเป็นจริง ส่วนของที่อยู่อีเมลในเครื่องจะเป็นบัญชีบทบาทที่รู้จักกันดี |
Status | ค่า ValidationEntryStatus สำหรับรายการนี้ |
Suggestions | การแก้ไขที่อาจเกิดขึ้นสำหรับข้อมูลอินพุต ในกรณีที่ Verifalia ระบุการพิมพ์ผิดที่อาจเกิดขึ้นในระหว่างกระบวนการตรวจสอบ |
SyntaxFailureIndex | ตำแหน่งของอักขระในที่อยู่อีเมลที่ทำให้การตรวจสอบไวยากรณ์ล้มเหลวในที่สุด |
นี่เป็นอีกตัวอย่างหนึ่ง ซึ่งแสดงรายละเอียดผลลัพธ์เพิ่มเติมบางส่วนที่ Verifalia ให้ไว้:
var job = await verifalia
. EmailValidations
. SubmitAsync ( "bat[[email protected]" ) ;
var entry = job . Entries [ 0 ] ;
Console . WriteLine ( $ "Classification: { entry . Classification } " ) ;
Console . WriteLine ( $ "Status: { entry . Status } " ) ;
Console . WriteLine ( $ "Syntax failure index: { entry . SyntaxFailureIndex } " ) ;
if ( entry . Suggestions != null )
{
Console . WriteLine ( "Suggestions:" ) ;
foreach ( var suggestion in entry . Suggestions )
{
Console . WriteLine ( $ "- { suggestion } " ) ;
}
}
// Classification: Undeliverable
// Status: InvalidCharacterInSequence
// Syntax failure index: 3
// Suggestions:
// - [email protected] ในการตรวจสอบรายการที่อยู่อีเมล - แทนที่จะเป็นที่อยู่เดียว - คุณสามารถใช้เมธอด SubmitAsync() โอเวอร์โหลดซึ่งยอมรับ IEnumerable<string> ; หากที่อยู่อีเมลที่จะตรวจสอบถูกจัดเก็บไว้ในไฟล์แต่เดิม ก็เป็นไปได้ที่จะอัปโหลดไฟล์และให้ Verifalia นำเข้าและตรวจสอบโดยอัตโนมัติ - โปรดดูรายละเอียดในส่วนถัดไป
นี่คือตัวอย่างที่แสดงวิธีการตรวจสอบอาร์เรย์ด้วยที่อยู่อีเมลบางส่วน:
var job = await verifalia
. EmailValidations
. SubmitAsync ( new [ ] {
"[email protected]" ,
"[email protected]" ,
"[email protected]"
} ) ;
Console . WriteLine ( $ "Job ID: { job . Overview . Id } " ) ;
foreach ( var entry in job . Entries )
{
Console . WriteLine ( $ "- { entry . InputData } => { entry . Classification } ( { entry . Status } )" ) ;
}
// Job Id: 290b5146-eeac-4a2b-a9c1-61c7e715f2e9
// - [email protected] => Deliverable (Success)
// - [email protected] => Undeliverable (DomainIsMisconfigured)
// - [email protected] => Deliverable (Success)ไลบรารีนี้รองรับการส่งและตรวจสอบไฟล์ด้วยที่อยู่อีเมล ซึ่งรวมถึง:
หากต้องการส่งและตรวจสอบความถูกต้องของไฟล์ เรายังคงสามารถใช้เมธอด SubmitAsync() ที่กล่าวถึงข้างต้น โดยส่งผ่าน Stream หรือ FileInfo instance หรือเพียง byte[] ที่มีเนื้อหาไฟล์ นอกจากนั้น ยังสามารถระบุแถวเริ่มต้นและสิ้นสุดในขั้นตอนสุดท้ายที่จะประมวลผล คอลัมน์ ดัชนีชีต การสิ้นสุดบรรทัด และตัวคั่น ขึ้นอยู่กับลักษณะของไฟล์ที่ส่งมา (ดู FileValidationRequest ในแหล่งที่มาเพื่อ เรียนรู้เพิ่มเติม)
ต่อไปนี้คือวิธีการส่งและตรวจสอบไฟล์ Excel ตัวอย่างเช่น:
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) ) ; สำหรับตัวเลือกขั้นสูงเพิ่มเติม เพียงส่งอินสแตนซ์ FileValidationRequest ไปยังเมธอด SubmitAsync() :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileValidationRequest ( new FileInfo ( "that-file.xslx" ) )
{
Sheet = 3 ,
StartingRow = 1 ,
Column = 5
} ,
quality : QualityLevelName . High ) ; และนี่คืออีกตัวอย่างหนึ่งที่แสดงวิธีการส่งอินสแตนซ์ Stream และการระบุประเภทเนื้อหา MIME ของไฟล์ ซึ่งจะถูกกำหนดโดยอัตโนมัติจากนามสกุลไฟล์ในกรณีที่คุณส่งผ่านอินสแตนซ์ FileInfo :
Stream inputStream = .. . ; // TODO: Acquire the input data somehow
var job = await verifalia
. EmailValidations
. SubmitAsync ( inputStream ,
MediaTypeHeaderValue . Parse ( WellKnownMimeContentTypes . TextPlain ) ) ; // text/plainในขณะที่ส่งที่อยู่อีเมลหนึ่งรายการขึ้นไปเพื่อตรวจสอบความถูกต้อง คุณสามารถระบุหลายตัวเลือกซึ่งส่งผลต่อพฤติกรรมของระบบประมวลผล Verifalia รวมถึงขั้นตอนการตรวจสอบจากจุดยืนของผู้บริโภค API
Verifalia นำเสนอระดับคุณภาพที่แตกต่างกันสามระดับ ได้แก่ มาตรฐาน สูง และ สุดขีด ซึ่งกำหนดวิธีที่เครื่องมือตรวจสอบอีเมลควรจัดการกับปัญหาไม่สามารถจัดส่งได้ชั่วคราว โดยระบบรับส่งเมลช้ากว่า และปัญหาชั่วคราวอื่น ๆ ที่อาจเกิดขึ้นซึ่งอาจส่งผลต่อคุณภาพของผลการตรวจสอบ การโอเวอร์โหลดเมธอด SubmitAsync() ยอมรับพารามิเตอร์ quality ซึ่งอนุญาตให้ระบุระดับคุณภาพที่ต้องการ นี่คือตัวอย่างที่แสดงวิธีการยืนยันที่อยู่อีเมลโดยใช้ระดับคุณภาพ สูง :
var job = await verifalia
. EmailValidations
. SubmitAsync ( "[email protected]" , quality : QualityLevelName . High ) ; เมธอด SubmitAsync() โอเวอร์โหลดการยอมรับที่อยู่อีเมลหลายรายการพร้อมกัน อนุญาตให้ระบุวิธีจัดการกับรายการที่ซ้ำกันที่เกี่ยวข้องกับชุดอินพุตเดียวกัน Verifalia รองรับโหมดการขจัดข้อมูลซ้ำซ้อน อย่างปลอดภัย ซึ่งยึดถือมาตรฐาน IETF แบบเก่าอย่างเคร่งครัด และโหมด Relaxed ซึ่งสอดคล้องกับสิ่งที่สามารถพบได้ในการกำหนดค่าตัวแลกเปลี่ยนเมลส่วนใหญ่ในปัจจุบัน
ในตัวอย่างถัดไป เราจะแสดงวิธีการนำเข้าและตรวจสอบรายการที่อยู่อีเมล และทำเครื่องหมายรายการที่ซ้ำกันโดยใช้โหมดการขจัดข้อมูล ซ้ำซ้อนแบบผ่อนคลาย :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) , deduplication : DeduplicationMode . Relaxed ) ; Verifalia จะลบงานการยืนยันอีเมลที่เสร็จสมบูรณ์โดยอัตโนมัติตามนโยบายการเก็บรักษาข้อมูลที่กำหนดไว้ในระดับบัญชี ซึ่งในที่สุดสามารถถูกแทนที่ในระดับผู้ใช้ได้: คุณสามารถใช้พื้นที่ไคลเอนต์ Verifalia เพื่อกำหนดการตั้งค่าเหล่านี้
นอกจากนี้ยังสามารถระบุนโยบายการเก็บรักษาข้อมูลต่องานซึ่งควบคุมเวลาคงเหลือของงานการยืนยันอีเมลที่ส่งมา ในการทำเช่นนั้น ให้ใช้เมธอด SubmitAsync() โอเวอร์โหลดซึ่งยอมรับ ValidationRequest หรืออินสแตนซ์ FileValidationRequest และเริ่มต้นคุณสมบัติ Retention ตามนั้น
ตัวอย่างเช่น ต่อไปนี้เป็นวิธีกำหนดนโยบายการเก็บรักษาข้อมูลเป็นเวลา 10 นาทีขณะยืนยันที่อยู่อีเมล:
var job = await verifalia
. EmailValidations
. SubmitAsync ( new ValidationRequest ( new [ ]
{
"[email protected]"
} )
{
Retention = TimeSpan . FromMinutes ( 10 )
} ) ; ตามค่าเริ่มต้น เมธอด SubmitAsync() จะโอเวอร์โหลดงานการยืนยันอีเมลไปที่ Verifalia และรอให้เสร็จสิ้น กระบวนการทั้งหมดอาจต้องใช้เวลาพอสมควรจึงจะเสร็จสมบูรณ์ ขึ้นอยู่กับแผนของบัญชี Verifalia จำนวนที่อยู่อีเมลที่ส่ง ระดับคุณภาพที่ระบุ และปัจจัยเครือข่ายอื่น ๆ รวมถึงเวลาแฝงของตัวรับส่งเมลที่อยู่ระหว่างการทดสอบ
ในการรอให้งานการยืนยันอีเมลที่กำหนดเสร็จสิ้น ไลบรารีจะสำรวจ Verifalia API ที่เกี่ยวข้องโดยอัตโนมัติจนกว่าผลลัพธ์จะพร้อม โดยค่าเริ่มต้น จะพยายามใช้ประโยชน์จากโหมดการโพลแบบยาวที่นำมาใช้กับ Verifalia API v2.4 ซึ่งช่วยลดจำนวนคำขอและรับผลการตรวจสอบได้เร็วขึ้น
อย่างไรก็ตาม ในบางสถานการณ์ (เช่น ในสถาปัตยกรรมไมโครเซอร์วิส) อาจเป็นการดีกว่าที่จะหลีกเลี่ยงการรองานให้เสร็จสิ้น และขอให้ Verifalia API จัดคิวไว้แทน ในกรณีนั้น ไลบรารีจะเพียงส่งคืนงาน ภาพรวม (และไม่ใช่ผลการตรวจสอบ) และจำเป็นต้องดึงผลการตรวจสอบโดยใช้เมธอด GetAsync()
ในการทำเช่นนั้น คุณสามารถระบุ WaitOptions.NoWait เป็นค่าสำหรับพารามิเตอร์ waitOptions ของเมธอด SubmitAsync() ที่โอเวอร์โหลดได้ ดังที่แสดงในตัวอย่างถัดไป:
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) ,
waitOptions : WaitOptions . NoWait ) ;
Console . WriteLine ( $ "Status: { job . Overview . Status } " ) ;
// Status: InProgress สำหรับงานที่มีที่อยู่อีเมลจำนวนมาก การติดตามความคืบหน้าอาจเป็นประโยชน์เนื่องจากงานเหล่านั้นได้รับการประมวลผลโดยเครื่องมือยืนยันอีเมล Verifalia ในการทำเช่นนั้น คุณสามารถสร้างอินสแตนซ์ของคลาส WaitOptions และจัดเตรียมตัวจัดการซึ่งในที่สุดจะได้รับการแจ้งเตือนความคืบหน้าผ่านคุณสมบัติ Progress
ต่อไปนี้เป็นวิธีกำหนดตัวจัดการการแจ้งเตือนความคืบหน้าซึ่งจะแสดงเปอร์เซ็นต์ความคืบหน้าของงานที่ส่งไปยังหน้าต่างคอนโซล:
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-other-file.csv" ) ,
waitOptions : new WaitOptions
{
Progress = new Progress < ValidationOverview > ( overview =>
{
Console . WriteLine ( overview . Progress ? . Percentage ) ;
} )
} ) ;นอกจากงานตรวจสอบอีเมลแต่ละงานแล้ว ยังสามารถระบุ URL ที่ Verifalia จะเรียกใช้ (POST) เมื่องานเสร็จสมบูรณ์: URL นี้ต้องใช้ HTTPS หรือรูปแบบ HTTP และสามารถเข้าถึงได้แบบสาธารณะผ่านทางอินเทอร์เน็ต หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเรียกกลับให้เสร็จสิ้น โปรดดู https://verifalia.com/developers#email-validations-completion-callback
หากต้องการระบุ URL การติดต่อกลับที่เสร็จสมบูรณ์ ให้ส่ง ValidationRequest หรือ FileValidationRequest ไปยังเมธอด SubmitAsync() และตั้งค่าคุณสมบัติ CompletionCallback ตามที่แสดงในตัวอย่างด้านล่าง:
await verifalia
. EmailValidations
. SubmitAsync ( new ValidationRequest ( new [ ] { "[email protected]" } )
{
CompletionCallback = new CompletionCallback ( "https://your-website-here/foo/bar" )
} ) ;โปรดทราบว่าการเรียกกลับที่เสร็จสมบูรณ์จะถูกเรียกใช้แบบอะซิงโครนัส และอาจใช้เวลาหลายวินาทีในการเรียก URL การเรียกกลับของคุณ
เป็นไปได้ที่จะดึงงานผ่านเมธอด GetAsync() และ GetOverviewAsync() ซึ่งจะส่งคืนอินสแตนซ์ Validation หรืออินสแตนซ์ ValidationOverview สำหรับงานการตรวจสอบอีเมลที่ต้องการตามลำดับ ขณะทำเช่นนั้น ไลบรารีจะรอจนกว่างานจะเสร็จสิ้นโดยอัตโนมัติ และเป็นไปได้ที่จะปรับพฤติกรรมนี้โดยการส่งพารามิเตอร์ waitOptions ไปยังเมธอดที่กล่าวมาข้างต้น ในลักษณะเดียวกับที่อธิบายไว้สำหรับการโอเวอร์โหลดเมธอด SubmitAsync() โปรดดูส่วนตัวเลือกการรอสำหรับรายละเอียดเพิ่มเติม
นี่คือตัวอย่างที่แสดงวิธีดึงงาน โดยระบุตัวระบุ:
var jobId = Guid . Parse ( "ec415ecd-0d0b-49c4-a5f0-f35c182e40ea" ) ;
var job = await verifalia . EmailValidations . GetAsync ( jobId ) ; ไลบรารีนี้ยังอนุญาตให้ส่งออกรายการของงานตรวจสอบอีเมลที่เสร็จสมบูรณ์ในรูปแบบเอาต์พุตต่างๆ ผ่านเมธอด ExportEntriesAsync() โดยมีเป้าหมายเพื่อสร้างการแสดงผลลัพธ์การตรวจสอบที่มนุษย์สามารถอ่านได้
คำเตือน : แม้ว่าสคีมาเอาต์พุต (คอลัมน์ / ป้ายกำกับ / รูปแบบข้อมูล) ค่อนข้างสมบูรณ์ คุณควรพิจารณาว่าอาจมีการเปลี่ยนแปลงได้เสมอ: ใช้เมธอด
GetAsync()/GetEntriesAsync()แทน หากคุณต้องการใช้สคีมาเอาต์พุตที่เสถียร
นี่คือตัวอย่างที่แสดงวิธีการส่งออกงานการยืนยันอีเมลที่กำหนดเป็นไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาค (CSV):
// Exports the validated entries for the job in the CSV format
var exportedStream = await verifalia
. EmailValidations
. ExportEntriesAsync ( new Guid ( "722c2fd8-8837-449f-ad24-0330c597c993" ) ,
ExportedEntriesFormat . Csv ) ;
// Creates the output file stream
var fileStream = new FileStream ( "my-list.csv" , FileMode . Create ) ;
// Copies the exported stream into the output file stream
await exportedStream . CopyToAsync ( fileStream ) ; Verifalia จะลบงานที่เสร็จสมบูรณ์โดยอัตโนมัติหลังจากนโยบายการเก็บรักษาข้อมูลที่กำหนดค่าได้ (ดูหัวข้อที่เกี่ยวข้อง) แต่ขอแนะนำอย่างยิ่งให้คุณลบงานที่เสร็จสมบูรณ์โดยเร็วที่สุด เพื่อเหตุผลด้านความเป็นส่วนตัวและความปลอดภัย ในการทำเช่นนั้น คุณสามารถเรียกใช้เมธอด DeleteAsync() โดยส่งรหัสงานที่คุณต้องการกำจัด:
await verifalia
. EmailValidations
. DeleteAsync ( job . Id ) ;เมื่อลบแล้ว งานจะสูญหายไปและไม่มีทางที่จะเรียกคืนผลการตรวจสอบความถูกต้องของอีเมลได้
เพื่อวัตถุประสงค์ในการจัดการและการรายงาน คุณอาจต้องการรับรายการโดยละเอียดของงานตรวจสอบอีเมลที่ผ่านมาของคุณ ไลบรารี SDK นี้อนุญาตให้ทำเช่นนั้นได้โดยใช้เมธอด ListAsync() ซึ่งอนุญาตให้ทำซ้ำแบบอะซิงโครนัสบนคอลเลกชันของอินสแตนซ์ ValidationOverview (คุณสมบัติประเภทเดียวกันของคุณสมบัติ Overview ของผลลัพธ์ที่ส่งคืนโดย SubmitAsync() และ GetAsync() )
ต่อไปนี้เป็นวิธีทำซ้ำงานของคุณ ตั้งแต่งานล่าสุดไปจนถึงงานเก่าที่สุด:
var jobOverviews = verifalia
. EmailValidations
. ListAsync ( new ValidationOverviewListingOptions
{
Direction = Direction . Backward
} ) ;
await foreach ( var jobOverview in jobOverviews )
{
Console . WriteLine ( "Id: {0}, status: {2}, entries: {3}" ,
jobOverview . Id ,
jobOverview . Status ,
jobOverview . NoOfEntries ) ;
}
// Prints out something like:
// Id: a7784f9a-86d4-436c-b8e4-f72f2bd377ac, status: InProgress, entries: 9886
// Id: 86d57c00-147a-4736-88cc-c918260c67c6, status: Completed, entries: 1
// Id: 594bbb0f-6f12-481c-926f-606cfefc1cd5, status: Completed, entries: 1
// Id: a5c1cd5b-39cc-43bc-9a3a-ee4a0f80ee6d, status: InProgress, entries: 226
// Id: b6f69e30-60dd-4c21-b2cb-e73ba75fb278, status: Completed, entries: 12077
// Id: 5e5a97dc-459f-4edf-a607-47371c32aa94, status: Deleted, entries: 1009
// ...เมธอด
ListAsync()ใช้คุณสมบัติ การแจกแจงแบบ async ของ C# 8.0 สำหรับการสนับสนุนภาษาก่อนหน้า โปรดตรวจสอบกลุ่มเมธอดListSegmentedAsync()
เมธอด ListAsync() ยังมีความสามารถในการกรองงานการยืนยันอีเมลที่ส่งคืนโดย Verifalia API โดยใช้อาร์กิวเมนต์ options เดียวกัน โดยสามารถกรองตามวันที่ส่ง เจ้าของ และสถานะของงานได้
ต่อไปนี้คือวิธีทำซ้ำการดำเนินการลงรายการที่แสดงในตัวอย่างด้านบน โดยคราวนี้จะส่งคืนเฉพาะงานของผู้ใช้ที่กำหนดและสำหรับช่วงวันที่ที่กำหนด:
var jobOverviews = verifalia
. EmailValidations
. ListAsync ( new ValidationOverviewListingOptions
{
Direction = Direction . Backward ,
CreatedOn = new DateBetweenPredicate ( new DateTime ( 2024 , 1 , 3 ) ,
new DateTime ( 2024 , 1 , 7 ) ) ,
Owner = new StringEqualityPredicate ( "50173acd-9ed2-4298-ba7f-8ccaeed48deb" )
} ) ;
await foreach ( var jobOverview in jobOverviews )
{
// ...
} ในการจัดการเครดิต Verifalia สำหรับบัญชีของคุณ คุณสามารถใช้คุณสมบัติ Credits ที่เปิดเผยโดยอินสแตนซ์ VerifaliaRestClient ที่สร้างขึ้นด้านบน เช่นเดียวกับหัวข้อก่อนหน้านี้ ในสองสามย่อหน้าถัดไป เราจะดูการดำเนินการที่ใช้มากที่สุด ดังนั้นจึงขอแนะนำอย่างยิ่งให้สำรวจไลบรารีและดูวิธีใช้ xmldoc ที่ฝังไว้สำหรับโอกาสอื่นๆ
งานทั่วไปอย่างหนึ่งที่คุณอาจต้องดำเนินการกับบัญชีของคุณคือการดึงเครดิตรายวันและชุดเครดิตฟรีตามจำนวนที่มีอยู่ ในการทำเช่นนั้น คุณสามารถใช้เมธอด GetBalanceAsync() ซึ่งจะส่งคืนอ็อบเจ็กต์ Balance ดังที่แสดงในตัวอย่างถัดไป:
var balance = await verifalia
. Credits
. GetBalanceAsync ( ) ;
Console . WriteLine ( "Credit packs: {0}, free daily credits: {1} (will reset in {2})" ,
balance . CreditPacks ,
balance . FreeCredits ,
balance . FreeCreditsResetIn ) ;
// Prints out something like:
// Credit packs: 956.332, free daily credits: 128.66 (will reset in 09:08:23)หากต้องการเพิ่มชุดเครดิตลงในบัญชี Verifalia ของคุณ โปรดไปที่ https://verifalia.com/client-area#/credits/add
สำหรับวิธีการตรวจสอบและคาดการณ์การใช้เครดิตสำหรับบัญชีของคุณ เมธอด ListDailyUsagesAsync() อนุญาตให้ดึงข้อมูลสถิติเกี่ยวกับการใช้เครดิตในอดีต โดยส่งคืนคอลเลกชันอินสแตนซ์ DailyUsage ที่สามารถทำซ้ำได้แบบอะซิงโครนัส วิธีนี้ยังช่วยจำกัดระยะเวลาดอกเบี้ยด้วยการส่งอินสแตนซ์ DailyUsageListingOptions องค์ประกอบจะถูกส่งกลับเฉพาะวันที่ที่มีการใช้งาน (เครดิตฟรี ชุดเครดิต หรือทั้งสองอย่าง) เกิดขึ้นเท่านั้น
ต่อไปนี้เป็นวิธีดึงข้อมูลการใช้เครดิตรายวันในช่วงสามสิบวันที่ผ่านมา:
var dailyUsages = verifalia
. Credits
. ListDailyUsagesAsync ( new DailyUsageListingOptions
{
DateFilter = new DateBetweenPredicate
{
Since = DateTime . Now . AddDays ( - 30 )
}
} ) ;
await foreach ( var dailyUsage in dailyUsages )
{
Console . WriteLine ( "{0:yyyyMMdd} - credit packs: {1}, free daily credits: {2}" ,
dailyUsage . Date ,
dailyUsage . CreditPacks ,
dailyUsage . FreeCredits ) ;
}
// Prints out something like:
// 20240201 - credit packs: 1965.68, free daily credits: 200
// 20240126 - credit packs: 0, free daily credits: 185.628
// 20240125 - credit packs: 15.32, free daily credits: 200
// ...เมธอด
ListDailyUsagesAsync()ใช้ฟีเจอร์ async ของ C# 8.0 สำหรับการสนับสนุนภาษาก่อนหน้า โปรดตรวจสอบกลุ่มเมธอดListDailyUsagesSegmentedAsync()
ส่วนนี้แสดงรายการบันทึกการเปลี่ยนแปลงสำหรับเวอร์ชันหลักปัจจุบันของไลบรารี: สำหรับเวอร์ชันเก่า โปรดดูการเผยแพร่โปรเจ็กต์ เพื่อความชัดเจน จึงไม่รวมบันทึกสำหรับการอัปเดตการสร้างและการแก้ไข
วางจำหน่ายวันที่ 11 มกราคม 2024
วางจำหน่ายวันที่ 26 พฤษภาคม 2023
ToAsyncEnumerableAsync() ที่ก่อนหน้านี้ส่งผลให้รายการไม่สมบูรณ์ในสถานการณ์เฉพาะวางจำหน่ายวันที่ 27 กุมภาพันธ์ 2023
WaitingStrategy เป็น WaitOptions และปรับโครงสร้างใหม่เพื่อให้สามารถปรับเวลารอการลงคะแนนเสียงพื้นฐานได้WaitOptions ใหม่)CompletionCallback ของคลาส ValidationRequest และ FileValidationRequest ชี้ไปที่คลาส CompletionCallback เต็มรูปแบบแทนที่จะเป็น Uri แบบธรรมดา