Nostalgic Primordial Monster

    nestjs-mailgun
    TypeScript icon, indicating that this package has built-in type declarations

    3.1.5 • Public • Published

    NestJS Mailgun

    NPM Version Package License NPM Downloads Test Package

    Introduction

    This is a simple wrapper of mailgun.js. It supports sending, verifying emails and list operations, but later more will be added. Just ping me or open pull request and contribute :)

    Installation

    yarn add nestjs-mailgun

    Usage

    Importing module

    import { MailgunModule } from 'nestjs-mailgun';
    @Module({
      imports: [
        MailgunModule.forRoot({
          username: 'api',
          key: 'string',
          public_key: 'string', // OPTIONAL
          timeout: 'number', // OPTIONAL, in milliseconds
          url: 'string', // OPTIONAL, default: 'api.mailgun.net'. Note that if you are using the EU region the host should be set to 'api.eu.mailgun.net'
        }),
      ],
      providers: [],
      exports: [],
    })
    export class YourModule {}

    Importing module Async

    import { MailgunModule } from 'nestjs-mailgun';
    @Module({
      imports: [
        MailgunModule.forAsyncRoot({
          useFactory: async () => {
            return {
              username: 'api',
              key: 'string',
              public_key: 'string', // OPTIONAL
              timeout: 'number', // OPTIONAL, in milliseconds
              url: 'string', // OPTIONAL, default: 'api.mailgun.net'. Note that if you are using the EU region the host should be set to 'api.eu.mailgun.net'
            };
          },
        }),
      ],
      providers: [],
      exports: [],
    })
    export class YourModule {}

    Calling Send Method

    import { MailgunService } from 'nestjs-mailgun';
    import { MailgunMessageData } from 'nestjs-mailgun'
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        const options: MailgunMessageData = {
          from: '',
          to: '',
          subject: '',
          text: '',
          html: '',
          attachment: '',
          cc: '',
          bcc: '',
          'o:testmode': 'no',
          'h:X-Mailgun-Variables': '{"key":"value"}',
        };
        await this.mailgunService.createEmail(domain, data);
      }
    }

    Calling Verify Method

    To check if an email is real or not.

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.validateEmail('next@examle.com');
      }
    }

    Create List Method

    To create a list of emails you need parameter data type CreateUpdateList which contain

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.createList(data);
      }
    }

    Destroy List Method

    To destroy a list of emails

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.destroyList('mailListAddress@n.com');
      }
    }

    Get List Method

    To Get a list of emails

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.getList('mailListAddress@n.com');
      }
    }

    Update List Method

    To Update a list of emails data is an object like:

    { address: string; name?: string; description?: string; access_level?: 'readonly' | 'members' | 'everyone'; reply_preference?: 'list' | 'sender'; }

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.updateList('mailListAddress@n.com', data);
      }
    }

    Add member to a List

    To add a member to the list data is an object like:

    { address: string; name?: string; vars?: string; subscribed?: 'yes' | 'no' | boolean; upsert?: 'yes' | 'no'; }

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.listAddMember('mailListAddress@n.com', data);
      }
    }

    Get members of a List

    To get a member of the list Query is an object like:

    { subscribed?: 'yes' | 'no'; limit?: number; }

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.listGetMembers('mailListAddress@n.com', query);
      }
    }

    Update members of a List

    To update member of the list

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.listupdateMember(
          'mailListAddress@n.com',
          'memberAddress',
          data,
        );
      }
    }

    Destroy member of a List

    To destroy member of the list

    import { MailgunService } from 'nestjs-mailgun';
    
    @Injectable()
    export class YourService {
      constructor(private mailgunService: MailgunService) {
        await this.mailgunService.listDestroyMember(
          'mailListAddress@n.com',
          'memberAddress',
        );
      }
    }

    Contributing

    Contributions welcome! See Contributing.

    Notes

    This project is not endorsed by or affiliated with Mailgun.

    Author

    Stanislav V Vyaliy Site Nuno Carvalhão Site

    License

    Licensed under the MIT License - see the LICENSE file for details.

    Install

    npm i nestjs-mailgun

    DownloadsWeekly Downloads

    339

    Version

    3.1.5

    License

    MIT

    Unpacked Size

    135 kB

    Total Files

    33

    Last publish

    Collaborators

    • wisekaa03