zdpgo_email

package module
v1.1.7 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: MIT Imports: 9 Imported by: 2

README

zdpgo_email

使用 Golang 操作 Email

项目地址:https://github.com/zhangdapeng520/zdpgo_email

版本历史

  • v0.1.0 2022/04/08 常用功能
  • v1.0.1 2022/05/03 新增:基于 key 的发送和校验
  • v1.0.2 2022/05/10 优化:新增邮箱如果失败,则返回错误而非抛出错误
  • v1.0.3 2022/05/10 新增:支持使用嵌入文件系统发送邮件附件
  • v1.0.4 2022/05/10 BUG 修复:修复嵌入文件无法正常读取的 BUG
  • v1.0.5 2022/05/11 BUG 修复:邮箱连接失败导致异常退出
  • v1.0.6 2022/05/12 新增:发送邮件并校验结果
  • v1.0.7 2022/05/12 优化:代码优化
  • v1.0.8 2022/05/13 升级:升级 random 组件为 v1.1.5
  • v1.0.9 2022/05/18 新增:批量发送普通附件
  • v1.1.0 2022/05/24 优化:移除 IMAP
  • v1.1.1 2022/06/06 BUG 修复:解决权限校验失败的 BUG
  • v1.1.2 2022/06/20 升级:日志升级
  • v1.1.3 2022/06/20 升级:日志升级
  • v1.1.4 2022/06/21 BUG 修复:无法正常发送邮件
  • v1.1.5 2022/06/21 优化:取消打印配置信息,防止密码泄露
  • v1.1.6 2022/06/29 优化:移除日志组件
  • v1.1.7 2022/07/14 优化:移除 random 和 yaml 组件

使用示例

请查看 examples/basic 示例,该示例演示了全部用法

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RandomStr added in v1.1.7

func RandomStr(n int) string

生成随机数的方法

Types

type Config added in v0.1.1

type Config struct {
	HeaderTagName        string `yaml:"header_tag_name" json:"header_tag_name"`               // 请求头标记名
	HeaderTagValue       string `yaml:"header_tag_value" json:"header_tag_value"`             // 请求头标记值
	CommonTitle          string `yaml:"common_title" json:"common_title"`                     // 通用邮件标题
	Id                   string `yaml:"id" json:"id"`                                         // 用于SMTP登录
	SendSleepMillisecond int    `yaml:"send_sleep_millisecond" json:"send_sleep_millisecond"` // 发送邮件的间隔休眠时间
	Timeout              int    `yaml:"timeout" json:"timeout"`                               // 超时时间
	Email                string `yaml:"email" json:"email"`                                   // 发送者的邮箱
	Username             string `yaml:"username" json:"username"`                             // 发送者的名字
	Password             string `yaml:"password" json:"password"`                             // 发送者的邮箱的校验密码(不一定是登陆密码)
	Host                 string `yaml:"smtp_host" json:"smtp_host"`                           // 邮箱服务器的主机地址(域名)
	Port                 int    `yaml:"smtp_port" json:"smtp_port"`                           // 端口
	IsSSL                bool   `yaml:"is_ssl" json:"is_ssl"`                                 // 是否为SSL模式
}

Config 配置类

type Email

type Email struct {
	Fs     *embed.FS    // 嵌入的文件系统
	Config *Config      // 配置对象
	Result *EmailResult // 邮件发送结果
	Lock   sync.Mutex   // 同步锁
}

func New

func New() (email *Email, err error)

New 新建邮件对象,支持发送邮件和接收邮件

func NewWithConfig added in v1.0.1

func NewWithConfig(config *Config) (email *Email, err error)

NewWithConfig 根据配置文件,创建邮件对象

func (*Email) GetMessage added in v1.1.0

func (e *Email) GetMessage(req EmailRequest) (*gomail.Message, error)

GetMessage 获取HTML类型的消息对象 @param req 邮件请求对象

func (*Email) GetSender added in v1.0.6

func (e *Email) GetSender() (gomail.SendCloser, error)

GetSender 获取发送对象

func (*Email) IsHealth added in v1.0.6

func (e *Email) IsHealth() bool

IsHealth 检测是否健康,能否正常连接

func (*Email) Send

func (e *Email) Send(req EmailRequest) (EmailResult, error)

Send 发送邮件 @param req 请求对象 @return 发送结果,错误信息

func (*Email) SendEmailWithMessage added in v1.1.0

func (e *Email) SendEmailWithMessage(message *gomail.Message) error

SendEmailWithMessage 使用消息对象发送邮件 @param message 消息对象

func (*Email) SendGoMail added in v1.1.0

func (e *Email) SendGoMail(req EmailRequest) error

SendGoMail 使用发送邮件 @param req 发送邮件请求对象 @return 错误信息

func (*Email) SendMany added in v1.1.0

func (e *Email) SendMany(reqList []EmailRequest) ([]EmailResult, error)

SendMany 批量发送HTML文本文件 @param reqList 邮件发送请求对象列表 @return 发送结果列表,错误信息

func (*Email) SendWithTag added in v1.1.0

func (e *Email) SendWithTag(tagKey, tagValue string, req EmailRequest) error

SendWithTag 通过标签发送邮件

type EmailRequest added in v1.1.0

type EmailRequest struct {
	Title       string    `json:"title"`
	Body        string    `json:"body"`
	Type        string    `json:"type"`  // 类型:text,html
	IsFs        bool      `json:"is_fs"` // 是否为嵌入文件系统
	Fs          *embed.FS // 嵌入文件系统对象
	IsFiles     bool      `json:"is_readers"` // 是否为自定义的文件输入流
	Files       map[string]*os.File
	Attachments []string `json:"attachments"`
	ToEmails    []string `json:"to_emails"`  // 收件人
	CcEmails    []string `json:"cc_emails"`  // 抄送人
	BccEmails   []string `json:"bcc_emails"` // 密送人
}

EmailRequest 邮件请求信息

type EmailResult added in v1.0.6

type EmailResult struct {
	Key           string   `json:"key"`            // 唯一key
	Title         string   `json:"title"`          // 标题
	Body          string   `json:"body"`           // 邮件内容
	Type          string   `json:"type" `          // 邮件类型:html、text文本
	From          string   `json:"from"`           // 发件人
	ToEmails      []string `json:"to_emails"`      // 收件人
	CcEmails      []string `json:"cc_emails"`      // 抄送人邮箱地址列表
	BccEmails     []string `json:"bcc_emails"`     // 密送人邮箱地址列表
	Attachments   []string `json:"attachments"`    // 附件列表
	StartTime     int      `json:"start_time"`     // 发送邮件的开始时间
	EndTime       int      `json:"end_time"`       // 发送邮件的结束时间
	SendStatus    bool     `json:"send_status"`    // 发送状态,成功还是失败
	ReceiveStatus bool     `json:"receive_status"` // 接收状态,成功还是失败
}

EmailResult 邮件结果

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

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