gonormail

package module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2020 License: MIT Imports: 3 Imported by: 0

README

gonormail

gonormail is a Go library to normalize email or build a email normalizer with the default support of gmail.

Usage

Normalization by default normalizer supported gmail. email should be validated before normalization.

gonormail.Normalize("Not A Email")              // Not A Email
gonormail.Normalize("Not@A@Email")              // Not@A@Email
gonormail.Normalize("A.B.c@Gmail.com")          // abc@gmail.com
gonormail.Normalize("a.B..c@gmail.com")         // abc@gmail.com
gonormail.Normalize("a.b.c+001@gmail.com")      // abc@gmail.com
gonormail.Normalize("a.b.c+001@googlemail.com") // abc@gmail.com
gonormail.Normalize("a.b.c+001@whatever.com")   // a.b.c+001@whatever.com

Customized normalization by extending the default EmailNormalizer.

norm := gonormail.DefaultEmailNormalizer().
  AddNormalizer(gonormail.NewDomainAlias(map[string]string{"examplemail.com": "email.com"})).
  AddNormalizer(gonormail.NewRemoveLocalDots("email.com")).
  AddNormalizer(gonormail.NewRemoveSubAddressing(map[string]string{"email.com": "-"}))

norm.Normalize("A.B.c+001@Gmail.com")       // abc@email.com
norm.Normalize("A.b.c+002@googlemail.com")  // abc@email.com
norm.Normalize("A.B.c-003@Examplemail.Com") // abc@email.com
norm.Normalize("A.B.c-004@Email.Com")       // abc@email.com

Create a new EmailNormalizer by fully customization.

norm := gonormail.NewEmailNormalizer().
  AddFunc(gonormail.ToLowerCase).
  AddNormalizer(gonormail.NewDomainAlias(map[string]string{"googlemail.com": "gmail.com", "examplemail.com": "email.com"})).
  AddNormalizer(gonormail.NewRemoveLocalDots("email.com", "gmail.com")).
  AddNormalizer(gonormail.NewRemoveSubAddressing(map[string]string{"email.com": "-", "gmail.com": "+"}))

norm.Normalize("A.B.c+001@Gmail.com")       // abc@gmail.com
norm.Normalize("A.b.c+002@googlemail.com")  // abc@gmail.com
norm.Normalize("A.B.c-003@Examplemail.Com") // abc@email.com
norm.Normalize("A.B.c-004@Email.Com")       // abc@email.com

Create your own Normalizer.

norm := gonormail.NewEmailNormalizer().
  AddFunc(func(e *gonormail.EmailAddress) {
    e.Local = strings.ToUpper(e.Local)
    e.Domain = strings.ToUpper(e.Domain)
})
norm.Normalize("abc@email.com") // ABC@EMAIL.COM

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Normalize

func Normalize(email string) string

Normalize normalizes given email by default EmailNormalizer whitch supports gmail.

func ToLowerCase added in v0.2.0

func ToLowerCase(email *EmailAddress)

ToLowerCase normalize local part and domain part to lower case.

Types

type DomainAlias added in v0.2.0

type DomainAlias struct {
	// contains filtered or unexported fields
}

DomainAlias holding the map of alias -> domain

func NewDomainAlias added in v0.2.0

func NewDomainAlias(aliases map[string]string) *DomainAlias

NewDomainAlias returns a new Normalizer that transfers domain alias to normalized domain.

func (*DomainAlias) Normalize added in v0.2.0

func (d *DomainAlias) Normalize(email *EmailAddress)

Normalize normalizes domain part of the given email by aliases map.

type EmailAddress added in v0.2.0

type EmailAddress struct {
	Local  string
	Domain string
}

func NewEmailAddress added in v0.2.0

func NewEmailAddress(email string) *EmailAddress

func (*EmailAddress) String added in v0.2.0

func (e *EmailAddress) String() string

type EmailNormalizer added in v0.2.0

type EmailNormalizer struct {
	// contains filtered or unexported fields
}

EmailNormalizer struct that holding Normalizater.

func DefaultEmailNormalizer added in v0.2.0

func DefaultEmailNormalizer() *EmailNormalizer

DefaultNormalizer ...

func NewEmailNormalizer added in v0.2.0

func NewEmailNormalizer(nrs ...Normalizer) *EmailNormalizer

NewEmailNormalizer create new EmailNormalizer by given Normalizer

func (*EmailNormalizer) AddFunc added in v0.2.0

func (n *EmailNormalizer) AddFunc(nfs ...func(*EmailAddress)) *EmailNormalizer

AddFunc add func as Normalizer.

func (*EmailNormalizer) AddNormalizer added in v0.2.0

func (n *EmailNormalizer) AddNormalizer(nrs ...Normalizer) *EmailNormalizer

AddNormalizer add Normalizer.

func (*EmailNormalizer) Normalize added in v0.2.0

func (n *EmailNormalizer) Normalize(email string) string

Normalize normalize given email by registered Normalizer.

type NormalizeFunc

type NormalizeFunc func(*EmailAddress)

func (NormalizeFunc) Normalize added in v0.2.0

func (n NormalizeFunc) Normalize(email *EmailAddress)

type Normalizer

type Normalizer interface {
	Normalize(email *EmailAddress)
}

type RemoveLocalDots added in v0.2.0

type RemoveLocalDots struct {
	// contains filtered or unexported fields
}

func NewRemoveLocalDots added in v0.2.0

func NewRemoveLocalDots(domains ...string) *RemoveLocalDots

NewRemoveLocalDots ...

func (*RemoveLocalDots) Normalize added in v0.2.0

func (d *RemoveLocalDots) Normalize(email *EmailAddress)

Normalize ...

type RemoveSubAddressing added in v0.2.0

type RemoveSubAddressing struct {
	// contains filtered or unexported fields
}

func NewRemoveSubAddressing added in v0.2.0

func NewRemoveSubAddressing(tags map[string]string) *RemoveSubAddressing

NewRemoveSubAddressing returns a new Normalizer that removes sub-addressing by given domain -> tag map

func (*RemoveSubAddressing) Normalize added in v0.2.0

func (s *RemoveSubAddressing) Normalize(email *EmailAddress)

Normalize normalizes local part of the given email by removing sub-addressing.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL