Skip to content

llianc62/firewheel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

firewheel

Build Status codecov PkgGoDev CodeFactor GitHub

Package firewheel defines a message delivery model, provides various platform warpped sdk, such as Email, DingTalk, WeChat and etc.

Features:

  • Email
  • DingTalk
  • WeChat

Installation

go get -u github.com/LiangXianSen/firewheel

Guide

firewheel is well designed as out-of-the-box, you can send message by Sender which you choose, or implements a Messager, sets up multiple senders.

Simply usage:

package main

import (
	"log"
	"strings"

	fw "github.com/LiangXianSen/firewheel"
	"github.com/LiangXianSen/firewheel/sender/email"
)

func main() {
    var err error
    var sender fw.Sender

    if sender, err = email.NewSender(
      "smtp.gmail.com:587",                     // smtp server
      email.LoginAuth("username", "password"),  // smtp.Auth 
    ); err != nil {
      log.Fatal(err)
    }

    if err = sender.Send(
      strings.NewReader("test message"),        // io.Reader include message body
      email.TextContentType(),
      email.Subject("email test"),
      email.From("test@gmail.com"),
      email.To("test@gmail.com", "example@gmail.com"),
      email.Bcc("example@gmail.com"),
      email.Cc("example@gmail.com"),
    ); err != nil {
      log.Fatal(err)
    }
}

there are some tips:

  • You can gives all options when new a sender, use each Send() function will include all options once you provided. On condition that you don't usually change.

    sender, err = email.NewSender(
    		"smtp.gmail.com:587",
    		email.LoginAuth("username", "password"),
    		email.TextContentType(),
    		email.Subject("email test"),
    		email.From("test@gmail.com"),
    		email.To("example@gmail.com"),
    		email.Bcc("example@gmail.com"),
    		email.Cc("example@gmail.com"),
    	)

    or at some conditions change some of them.

    sender.Send(
    	strings.NewReader("test message"),
    	email.Subjectc("new email test"),
    )
  • sends message with dynamic subject:

    sender, err = email.NewSender(
    	        "smtp.gmail.com:587",
    	        email.LoginAuth("username", "password"),
    	        email.TextContentType(),
    	        email.SubjectFunc(func() string {
    	        	date := time.Now().Format("2016-01-02 15:04:05")
    	        	return "test date: " + date
    	        })
    	)

Massager pattern:

You also can implements Massager , sets up few senders. Sends one mssage to different destination. see examples