NestJS Mailgun
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
npm install @toledosteve/nestjs-mailgun
Usage
Importing module
import { MailgunModule } from '@toledosteve/nestjs-mailgun';
@Module({
imports: [
MailgunModule.forRoot({
username: 'string',
key: 'string',
public_key: 'string', // OPTIONAL
timeout: 'number', // OPTIONAL
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 '@toledosteve/nestjs-mailgun';
@Module({
imports: [
MailgunModule.forAsyncRoot({
useFactory: async () => {
return {
username: 'string',
key: 'string',
public_key: 'string', // OPTIONAL
timeout: 'number', // OPTIONAL
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 {}
Interfaces
interface EmailOptions {
from: string;
to: string | string[];
subject: string;
text?: string;
html?: string;
template?: string;
attachment?;
'h:X-Mailgun-Variables'?: string;
}
Calling Send Method
import { MailgunService } from '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/nestjs-mailgun'
@Injectable()
export class YourService {
constructor(private mailgunService: MailgunService) {
const options: EmailOptions = {
from: '',
to: '',
subject: '',
text: '',
html: '',
attachment:''
'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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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 '@toledosteve/nestjs-mailgun';
import { EmailOptions } from '@toledosteve/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
Nuno Carvalhão Site
License
Licensed under the MIT License - see the LICENSE file for details.