All Projects → dertuxmalwieder → libvldmail

dertuxmalwieder / libvldmail

Licence: MIT-0 license
Your friendly e-mail address validation library.

Programming Languages

c
50402 projects - #5 most used programming language
Roff
2310 projects
CMake
9771 projects
SWIG
194 projects

Projects that are alternatives of or similar to libvldmail

Check If Email Exists
Check if an email address exists without sending any email, written in Rust.
Stars: ✭ 497 (+957.45%)
Mutual labels:  email-validation
Validatetor
Android library for fast and simple string validation
Stars: ✭ 136 (+189.36%)
Mutual labels:  email-validation
email-validator
The Email Validator library builds upon PHP's built in `filter_var($emailAddress, FILTER_VALIDATE_EMAIL);` by adding a default MX record check. It also offers additional validation against disposable email addresses, free email address providers, and a custom banned domain list.
Stars: ✭ 18 (-61.7%)
Mutual labels:  email-validation
Truemail
🚀 Configurable framework agnostic plain Ruby 📨 email validator/verifier. Verify email via Regex, DNS and SMTP. Be sure that email address valid and exists.
Stars: ✭ 717 (+1425.53%)
Mutual labels:  email-validation
Laravel Email Verification
Laravel package to handle user verification using an activation mail
Stars: ✭ 63 (+34.04%)
Mutual labels:  email-validation
Emailvalidation
A simple (but correct) .NET class for validating email addresses
Stars: ✭ 171 (+263.83%)
Mutual labels:  email-validation
Deep Email Validator
Validates regex, typos, disposable, dns and smtp
Stars: ✭ 436 (+827.66%)
Mutual labels:  email-validation
flutter-email-validator
Sample Flutter app for creating basic login forms validation for email and passwords
Stars: ✭ 22 (-53.19%)
Mutual labels:  email-validation
Mailchecker
📫 Cross-language temporary (disposable/throwaway) email detection library. Covers 33600 fake email providers.
Stars: ✭ 1,252 (+2563.83%)
Mutual labels:  email-validation
reacher-js
TypeScript wrapper library over Reacher API
Stars: ✭ 24 (-48.94%)
Mutual labels:  email-validation
Laravel User Verification
PHP package built for Laravel 5.* to easily handle a user email verification and validate the email
Stars: ✭ 755 (+1506.38%)
Mutual labels:  email-validation
Th3inspector
Th3Inspector 🕵️ Best Tool For Information Gathering 🔎
Stars: ✭ 1,041 (+2114.89%)
Mutual labels:  email-validation
Email address
The EmailAddress Gem to work with and validate email addresses.
Stars: ✭ 199 (+323.4%)
Mutual labels:  email-validation
Swiftcop
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.
Stars: ✭ 544 (+1057.45%)
Mutual labels:  email-validation
python-string-utils
A handy Python library to validate, manipulate and generate strings
Stars: ✭ 47 (+0%)
Mutual labels:  email-validation
Anchorme.js
Tiny, fast, efficient, feature rich Javascript library to detect links / URLs / Emails in text and convert them to clickable HTML anchor links
Stars: ✭ 479 (+919.15%)
Mutual labels:  email-validation
Moonmail
Email marketing platform for bulk emailing via Amazon SES (Google Cloud Platform and Azure coming soon)
Stars: ✭ 1,766 (+3657.45%)
Mutual labels:  email-validation
email-validate-hs
Email address validation for Haskell
Stars: ✭ 39 (-17.02%)
Mutual labels:  email-validation
ATGValidator
iOS validation framework with form validation support
Stars: ✭ 51 (+8.51%)
Mutual labels:  email-validation
Email Validation Tool
An easy to use, accurate-ish & extensible email validation library for PHP 7+ 📧
Stars: ✭ 250 (+431.91%)
Mutual labels:  email-validation

libvldmail

Your friendly e-mail address validation library.

Why?

  • Did you know that parentheses, spaces and - according to the RFC 6531 document - emojis can be a part of a valid e-mail address?
  • Did you know that both IPv6 addresses and resources in your intranet are valid parts of the part after the "@", so requiring a TLD (xxxx.yy) is entirely wrong?

Nor do all of the existing (and more complex than "is there an @ character?") validators I've come across. So this is my approach.

Features

  • Written in C for a "good enough" interoperability with other languages.
  • Does not depend on any non-standard library - no regex, no ICU, no other overhead.
  • Can validate e-mail addresses according to RFC 6531 with a fallback to RFC 5321 ff.
  • Will return both a "success" flag (0 or 1) and an error message. (See the Usage part for more information.)
  • Could probably wash your dishes (after having adequate code and hardware extensions).

A note on Unicode support

By default, libvldmail respects the latest internationalization standards, so Unicode characters are allowed in both the domain and the local part of the e-mail address you aim to have validated. If your service does not allow that, your service sucks and you should be ashamed. You can teach libvldmail to fall back to the good old ASCII days by defining the NO_UNICODE_MAIL_PLEASE preprocessor parameter.

A note on deprecation inside the RFCs

Things change. E-mail addresses do not necessarily have to. By default, valid e-mail addresses are recognized as valid even if the standards say that you should not use them anymore. If you compile libvldmail with the STRICT_VALIDATION preprocessor parameter, however, the library will mark more "deprecated" addresses as invalid.

Portability

You should be able to use libvldmail from inside Ruby, Python. Lisp etc. with the included SWIG template file (contrib/libvldmail.i).

Usage

#include <vldmail.h>

int main(void) {
    /* ... your code ... */
    
    valid_mail_t validator = validate_email(L"[email protected]");
    if (0 == validator.success) {
        /* success == 0 means that something was wrong. */
        printf(L"Validating [email protected] failed: %ls\n", validator.message);
    }
    
    /* ... more of your code ... */
}

Building

Use CMake to create the libvldmail library, then link it into your application. And don't forget to point to the vldmail.h header.

Building the test file as well

By default, CMake does not build test.c which tries to test the library's basic functions. If you want to test libvldmail using it, please just pass the parameter BUILD_THE_TEST to CMake:

cmake . -DBUILD_THE_TEST=1

Versioning

libvldmail tries to follow the Semantic Versioning scheme. You can ask for the current version via the API:

printf("libvldmail version %d", VLDMAIL_VERSION);

We use simple mathematics here:

const int VLDMAIL_VERSION = 1;     // Version 0.0.1  (0 * 10^4 +  0 * 10^2 + 1 * 10^0)
const int VLDMAIL_VERSION = 21209; // Version 2.12.9 (2 * 10^4 + 12 * 10^2 + 9 * 10^0)

This should be enough.

Donations (optional)

libvldmail is free software by the terms of the MIT-0 license. As some people - including myself - like to contribute money for a good cause anyway, here are two possible options for you:

Donate money to the nature:

Both Kākāpō Recovery and the WWF do a pretty good job at trying to keep species alive. You are invited to join their efforts.

Donate money to me:

Yes, I like money as well.

Support via PayPal

Help me, please?

I accept pull requests if they are related to adding RFC-compatibility. This library seems to be working as intended, but - just like every other software - there might be quirks which I have not come across yet. You are invited to list yourself as a contributor below this paragraph if you need your merits:

Contributors

  • None, yet.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].