grpc

package
v3.0.9+incompatible Latest Latest
Warning

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

Go to latest
Published: Jul 8, 2022 License: AGPL-3.0 Imports: 23 Imported by: 9

Documentation

Overview

Package grpc provides the actual logic for posting emails to queue or to mail servers

Index

Constants

This section is empty.

Variables

View Source
var ExposedConfigs = &forms.Form{
	I18NBundle: lang.Bundle(),
	Groups: []*forms.Group{{
		Label: "Mail.Config.Title",
		Fields: []forms.Field{
			&forms.FormField{
				Name:        "from",
				Label:       "Mail.Config.From.Label",
				Description: "Mail.Config.From.Description",
				Mandatory:   true,
				Type:        forms.ParamString,
			},
			&forms.FormField{
				Name:        "fromName",
				Label:       "Mail.Config.FromName.Label",
				Description: "Mail.Config.FromName.Description",
				Mandatory:   false,
				Type:        forms.ParamString,
			},
			&forms.FormField{
				Name:        "fromCtl",
				Label:       "Mail.Config.FromCtl.Label",
				Description: "Mail.Config.FromCtl.Description",
				Mandatory:   false,
				Default:     "user",
				Type:        forms.ParamSelect,
				ChoicePresetList: []map[string]string{
					{"user": "Mail.Config.FromCtlUser.Label"},
					{"sender": "Mail.Config.FromCtlSender.Label"},
					{"default": "Mail.Config.FromCtlDefault.Label"},
				},
			},
			&forms.FormField{
				Name:        "queue",
				Type:        forms.ParamSelect,
				Label:       "Mail.Config.Queue.Label",
				Description: "Mail.Config.Queue.Description",
				ChoicePresetList: []map[string]string{
					{"boltdb": "Mail.Config.Queue.ValueBolt"},
					{"memory": "Mail.Config.Queue.ValueMemory"},
				},
				Default: "boltdb",
			},
			&forms.SwitchField{
				Name:        "sender",
				Label:       "Mail.Config.Mailer.Label",
				Description: "Mail.Config.Mailer.Description",
				Mandatory:   true,
				Default:     "disabled",
				Values: []*forms.SwitchValue{
					{
						Name:   "name",
						Label:  "Mail.Config.Disabled.Label",
						Value:  "disabled",
						Fields: []forms.Field{},
					},
					{
						Name:  "name",
						Label: "Mail.Config.NoOp.Label",
						Value: "noop",
						Fields: []forms.Field{
							&forms.FormField{
								Name:        "dump",
								Type:        forms.ParamBool,
								Default:     false,
								Label:       "Mail.Config.NoOp.Dump",
								Description: "Mail.Config.NoOp.Dump",
							},
							&forms.FormField{
								Name:        "dumpFolder",
								Type:        forms.ParamString,
								Default:     "{SERVICE_DIR}/mails",
								Label:       "Mail.Config.NoOp.DumpTarget",
								Description: "Mail.Config.NoOp.DumpTarget",
							},
						},
					},
					{
						Name:  "name",
						Label: "Mail.Config.Sendmail.Label",
						Value: "sendmail",
						Fields: []forms.Field{
							&forms.FormField{
								Name:        "legend",
								Type:        forms.ParamLegend,
								Description: "Mail.Config.Sendmail.Legend",
							},
						},
					},
					{
						Name:  "name",
						Label: "Mail.Config.Smtp.Label",
						Value: "smtp",
						Fields: []forms.Field{
							&forms.FormField{
								Name:        "host",
								Label:       "Mail.Config.Smtp.Host.Label",
								Description: "Mail.Config.Smtp.Host.Description",
								Mandatory:   true,
								Type:        forms.ParamString,
							},
							&forms.FormField{
								Name:        "port",
								Label:       "Mail.Config.Smtp.Port.Label",
								Description: "Mail.Config.Smtp.Port.Description",
								Mandatory:   true,
								Default:     465,
								Type:        forms.ParamInteger,
							},
							&forms.FormField{
								Name:        "user",
								Label:       "Mail.Config.Smtp.User.Label",
								Description: "Mail.Config.Smtp.User.Description",
								Mandatory:   true,
								Type:        forms.ParamString,
							},
							&forms.FormField{
								Name:        "password",
								Label:       "Mail.Config.Smtp.Password.Label",
								Description: "Mail.Config.Smtp.Password.Description",
								Mandatory:   true,
								Type:        forms.ParamPassword,
							},
							&forms.FormField{
								Name:        "insecureSkipVerify",
								Label:       "Mail.Config.Smtp.SkipVerify.Label",
								Description: "Mail.Config.Smtp.SkipVerify.Description",
								Mandatory:   false,
								Type:        forms.ParamBool,
							},
							&forms.FormField{
								Name:        "localName",
								Label:       "Mail.Config.Smtp.LocalName.Label",
								Description: "Mail.Config.Smtp.LocalName.Description",
								Mandatory:   false,
								Type:        forms.ParamString,
							},
						},
					},
					{
						Name:  "name",
						Label: "Mail.Config.SendGrid.Label",
						Value: "sendgrid",
						Fields: []forms.Field{
							&forms.FormField{
								Name:        "apiKey",
								Label:       "Mail.Config.SendGrid.ApiKey.Label",
								Description: "Mail.Config.SendGrid.ApiKey.Description",
								Mandatory:   true,
								Type:        forms.ParamString,
							},
						},
					},
				},
			},
		},
	}},
}
View Source
var (
	// Name is the identifier of this service
	Name = common.ServiceGrpcNamespace_ + common.ServiceMailer
)

Functions

func RegisterQueueJob

func RegisterQueueJob(ctx context.Context) error

RegisterQueueJob adds a job to the scheduler to regularly flush the queue

Types

type Handler

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

func NewHandler

func NewHandler(serviceCtx context.Context, conf configx.Values) (*Handler, error)

func (*Handler) ConsumeQueue

ConsumeQueue browses current queue for emails to be sent

func (*Handler) SendMail

func (h *Handler) SendMail(ctx context.Context, req *proto.SendMailRequest, rsp *proto.SendMailResponse) error

SendMail either queues or send a mail directly

Jump to

Keyboard shortcuts

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