Skip to content

Clustox/emailverify-csharp-sdk

Repository files navigation

EmailVerify C# SDK

The official C# SDK for EmailVerify.io - A comprehensive email validation, verification, and finder service.

Features

  • βœ… Single Email Validation - Validate individual email addresses in real-time
  • βœ… Batch Email Validation - Process up to 5,000 emails efficiently
  • βœ… Account Balance Checking - Monitor your API credits and limits
  • βœ… Email Finder - Discover email addresses using names and domains

Installation

Package Manager Console

Install-Package EmailVerify.SDK

.NET CLI

dotnet add package EmailVerify.SDK

Initialize the SDK

using EmailVerifySDK;

// Initialize with your API key generated from Emailverify.io
EmailVerify.Instance.Initialize("<YOUR_API_KEY>");

Validate a Single Email

EmailVerify.Instance.Validate("<EMAIL_ADDRESS>", //Email address to verify
    response =>
    {
        Console.WriteLine(response);
        Console.WriteLine($"Email: {response.Email}");
        Console.WriteLine($"Status: {response.Status}");
        Console.WriteLine($"Sub Status: {response.SubStatus}");
    },
    error =>
    {
        Console.WriteLine($"Error: {error}");
    });

Sample Response:

EVValidateResponse {
    email='email@gmail.com', 
    status='do_not_mail', 
    subStatus='mailbox_quota_exceeded'
}

You can access the values by:

email: {response.Email}
status: {response.Status}
Substatus: {response.SubStatus}

Status can be any of the following:

  • valid
  • invalid
  • catch_all
  • do_not_mail
  • unknown
  • role_based
  • skipped

Sub Status can be any of the following:

  • permitted
  • failed_syntax_check
  • mailbox_quota_exceeded
  • mailbox_not_found
  • no_dns_entries
  • disposable
  • none
  • opt_out
  • blocked_domain

Check Account Balance and api status

EmailVerify.Instance.CheckBalance(
    response =>
    {
        Console.WriteLine($"Response: {response}");
        Console.WriteLine($"API Status: {response.ApiStatus}");
        Console.WriteLine($"Daily Credit Limit: {response.DailyCreditsLimit}");

        
        if (response.IsAppSumoUser)
        {
            Console.WriteLine($"Remaining Daily Credits: {response.RemainingDailyCredits}");
            Console.WriteLine($"Bonus Credits: {response.BonusCredits}");
        }
        else
        {
            Console.WriteLine($"Referral Credits: {response.ReferralCredits}");
            Console.WriteLine($"Remaining Credits: {response.RemainingCredits}");
        }            
    },
    error =>
    {
        Console.WriteLine($"Error: {error}");
    });

For simple users sample response:

EVBalanceResponse {
    apiStatus='enabled', 
    dailyCreditsLimit=0, 
    remainingCredits=9741, 
    referralCredits=0, 
    isAppSumoUser=False
}

You can get the values by:

Api Status: {response.ApiStatus}
Referral Credits: {response.ReferralCredits}
Remaining Credits: {response.RemainingCredits}
Daily Credits Limit: {response.DailyCreditsLimit}

For appsumo users sample response:

EVBalanceResponse {
    apiStatus='enabled', 
    dailyCreditsLimit=1000, 
    remainingDailyCredits=998, 
    bonusCredits=35000, 
    isAppSumoUser=True
}

You can get the values by:

Api Status: {response.ApiStatus}
Daily Credit Limit: {response.DailyCreditsLimit}
Bonus Credits: {response.BonusCredits}
is appsumo user: {response.IsAppSumoUser}

Batch Email Validation

var emails = new List<string>
{
    "user1@example.com",
    "user2@example.com", 
    "user3@example.com"
};

EmailVerify.Instance.ValidateBatch("<TITLE_OF_TASK>", emails, // Title and emails are required filed
    response =>
    {
        Console.WriteLine($"Response: {response}");        
        Console.WriteLine($"Task ID: {response.TaskId}");
        Console.WriteLine($"Status: {response.Status}");
        Console.WriteLine($"Emails submitted: {response.CountSubmitted}");
        Console.WriteLine($"Duplicates removed: {response.CountDuplicatesRemoved}");
        Console.WriteLine($"Rejected emails: {response.CountRejectedEmails}");
        Console.WriteLine($"Processing: {response.CountProcessing}");
    },
    error =>
    {
        Console.WriteLine($"Error: {error}");
    });

Sample Response:

EVBatchSubmitResponse {
    status='queued', 
    taskId=2940, 
    countSubmitted=3, 
    countDuplicatesRemoved=0, 
    countRejectedEmails=0, 
    countProcessing=3
}

5. Get Batch Results

int task_id = <TASK_ID>; // Task Id you get while using batch validation api 
                         // MUST BE integer
EmailVerify.Instance.GetBatchResult(task_id,
    response =>
    {
        Console.WriteLine($" Response: {response}");
        Console.WriteLine($" Task Name: {response.Name}");
        Console.WriteLine($" Task ID: {response.TaskId}");
        Console.WriteLine($" Status: {response.Status}");
        Console.WriteLine($" Progress: {response.ProgressPercentage}");
        Console.WriteLine($" Checked: {response.CountChecked}/{response.CountTotal}");
        
        if (response.Results?.EmailBatch != null && response.Results.EmailBatch.Count > 0)
        {
            Console.WriteLine("\nπŸ“Š Individual Results:");
            Console.WriteLine("----------------------");
            for (int i = 0; i < response.Results.EmailBatch.Count; i++)
            {
                var result = response.Results.EmailBatch[i];
                Console.WriteLine($"{result.Address}:{result.Status}: ({result.SubStatus})");
            }
        }
    },
    error =>
    {
        Console.WriteLine($"Error: {error}");
    });

Sample Response when verification completed:

EVBatchResultResponse {
    countChecked=3, 
    countTotal=3, 
    name='Task Title', 
    progressPercentage='100', 
    taskId='2940', 
    status='verified', 
    results=EVBatchResults{
        emailBatch=
            [EVBatchEmailResult {
                address='user1@example.com', 
                status='do_not_mail', 
                subStatus='mailbox_quota_exceeded'
             }, 
            EVBatchEmailResult{
                address='user2@example.com', 
                status='do_not_mail', subStatus='mailbox_quota_exceeded'
            }, 
            EVBatchEmailResult{
                address='user3@example.com', 
                status='do_not_mail', subStatus='mailbox_quota_exceeded'
            }]
    }
}

Sample Response when verification pending:

EVBatchResultResponse{countChecked=0, countTotal=3, name='Task Title', progressPercentage='0.0', taskId='2941', status='queued', results=null}

Single Email Finder

 EmailVerify.Instance.FindEmail("<USER_NAME>", "<DOMAIN.COM>",
    response =>
    {
        Console.WriteLine($"Response: {response}");
        Console.WriteLine($"Status: {response.Status}");
        Console.WriteLine($"Result: {response.Email}");

        if (response.IsFound) // IF email found
        {
            Console.WriteLine($"βœ“ Found: {response.Email}");
            
        }
        else
        {
            Console.WriteLine($"Not Found");
        }
    },
    error =>
    {
        Console.WriteLine($" Error: {error}");
    });

Sample Response when email not found:

EVFinderResponse {
    email='null', 
    status='not_found', 
    isFound=False
}

Sample Response when email found:

EVFinderResponse {
    email='user@example.com', 
    status='found', 
    isFound=True
}

Response Models

EVValidateResponse

public class EVValidateResponse
{
    public string Email { get; set; }        // Email address validated
    public string Status { get; set; }       // Validation status (valid, invalid, etc.)
    public string SubStatus { get; set; }    // Detailed sub-status
}

EVBalanceResponse

public class EVBalanceResponse
{
    public string ApiStatus { get; set; }           // API status (enabled/disabled)
    public int DailyCreditsLimit { get; set; }      // Daily credits limit
    public int? ReferralCredits { get; set; }       // Referral credits (regular users)
    public int? RemainingCredits { get; set; }      // Remaining credits (regular users)
    public int? RemainingDailyCredits { get; set; } // Remaining daily credits (AppSumo users)
    public int? BonusCredits { get; set; }          // Bonus credits (AppSumo users)
    public bool IsAppSumoUser { get; }              // True if AppSumo user
}

EVBatchSubmitResponse

public class EVBatchSubmitResponse
{
    public string Status { get; set; }              // Submission status
    public string TaskId { get; set; }              // Task ID for tracking
    public int CountSubmitted { get; set; }         // Emails submitted
    public int CountDuplicatesRemoved { get; set; } // Duplicates removed
    public int CountRejectedEmails { get; set; }    // Rejected emails
    public int CountProcessing { get; set; }        // Emails being processed
}

EVBatchResultResponse

public class EVBatchResultResponse
{
    public int CountChecked { get; set; }        // Emails processed
    public int CountTotal { get; set; }          // Total emails in batch
    public string Name { get; set; }             // Task name
    public string ProgressPercentage { get; set; } // Progress percentage
    public string TaskId { get; set; }           // Task ID
    public string Status { get; set; }           // Task status
    public EVBatchResults Results { get; set; }  // Batch results
}

EVFinderResponse

public class EVFinderResponse
{
    public string Email { get; set; }    // Found email or "null"
    public string Status { get; set; }   // Status (found/not_found)
    public bool IsFound { get; }         // True if email was found
}

Configuration

Environment Variables (Recommended)

For security, use environment variables instead of hardcoding API keys:

string apiKey = Environment.GetEnvironmentVariable("EMAILVERIFY_API_KEY");
EmailVerify.Instance.Initialize(apiKey);

Testing

dotnet test

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages