github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/pkg/emailclient/dashapi_sender.go (about)

     1  // Copyright 2025 syzkaller project authors. All rights reserved.
     2  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  package emailclient
     5  
     6  import (
     7  	"context"
     8  	"github.com/google/syzkaller/dashboard/dashapi"
     9  	"github.com/google/syzkaller/pkg/email"
    10  	"github.com/google/syzkaller/syz-cluster/pkg/app"
    11  	"net/mail"
    12  )
    13  
    14  func makeDashapiSender(cfg *app.EmailConfig) (Sender, error) {
    15  	dash, err := dashapi.New(cfg.Dashapi.Client, cfg.Dashapi.Addr, "")
    16  	if err != nil {
    17  		return nil, err
    18  	}
    19  	return func(_ context.Context, item *Email) (string, error) {
    20  		sender := (&mail.Address{
    21  			Name:    cfg.Name,
    22  			Address: cfg.Dashapi.From,
    23  		}).String()
    24  		if item.BugID != "" {
    25  			var err error
    26  			sender, err = email.AddAddrContext(sender, cfg.Dashapi.ContextPrefix+item.BugID)
    27  			if err != nil {
    28  				return "", err
    29  			}
    30  		}
    31  		return "", dash.SendEmail(&dashapi.SendEmailReq{
    32  			Sender:    sender,
    33  			To:        item.To,
    34  			Cc:        item.Cc,
    35  			Subject:   cfg.SubjectPrefix + item.Subject,
    36  			InReplyTo: item.InReplyTo,
    37  			Body:      string(item.Body),
    38  		})
    39  	}, nil
    40  }