Auth Email

This is an easy way to authenticate user email with OTP using PHP as a backend in your own server.

Server Side

  • Download php server from v0.0.4 and modify config.php in src directory with your own configurations. Example:
// This is a simple configs, you can modify more configs in `index.php`.
$HOST = '';
$USER_NAME = '';
$PASSWORD = 'password';
$PORT = 587;

$DEFAULT_SUBJECT = 'Verify Email';
$DEFAULT_BODY = 'Please use this OTP to verify your email for the <b>{appName}</b>, do not share this code to anyone: <b>{otp}</b>';

// client key: authemailtestkey
$SERVER_SHA256_KEY = '6955c3a2dbfd121697623896b38f5eb759d2cd503476980e14b9beb0cc036c4d';

// Security of your applications.
    // Name of application. Must be the same as `appName` on client side.
    'Auth Email Test' => [
        // Allow this app using modified subject or not.
        'modifiedSubject' => false,
        // Allow this app using modified body or not.
        'modifiedBody' => false,
        // Allow this app using modified otp length or not.
        'modifiedOtpLength' => false,
  • Upload only files in src directory to your server.

Client Side

  • Add auth_email to your project as dependency.
  • Create a controller for auth_email:
final authEmail = AuthEmail(
    // Name of application. Must be available in the `$ALLOWED_APPS` on server.
    appName: 'Auth Email Test',
    // URL of your server.
    server: '',
    // You client key.
    serverKey: 'authemailtestkey',
    // Allow print debug log or not.
    isDebug: true,
  • Send OTP code to your client email:
final bool result = await authEmail.sendOTP(email: '');

You can also change email subject, body and otpLength by its parameters as you want to, but you have to change the permissions on your php server config to true first.

  • Verify OTP code:
final bool isVerified = authEmail.verifyOTP(email: '', otp: '<code>');


You can check the email is valid or not before sending OTP code by using:

final bool isValidEmail = AuthEmail.isValidEmail('');

Test Server

  • This project include a test server, you can create your own test app with this test sever by using this configuration:

    // This only use for testing purposes.
    final authEmail = AuthEmail(
      appName: 'Auth Email Example', // <- For testing, only this app name is allowed
      server: '',
      serverKey: 'ohYwh',
  • You can also test this plugin on web.

  • Please use this config for testing only.


  • Feel free to file an issue if you find any bugs or something is missing, PR is also welcome.