ultisuite-backend/internal/api/mail/account_bootstrap.go
2026-05-24 00:03:36 +02:00

45 lines
1.2 KiB
Go

package mail
import (
"context"
"fmt"
"strings"
)
func identityDisplayName(name, email string) string {
if n := strings.TrimSpace(name); n != "" {
return n
}
if i := strings.Index(email, "@"); i > 0 {
return email[:i]
}
return strings.TrimSpace(email)
}
func defaultSignatureName(email string) string {
return fmt.Sprintf("Signature — %s", strings.TrimSpace(email))
}
func (s *Service) ensureIdentityDefaultSignature(ctx context.Context, externalID, email string) (string, error) {
return s.CreateSignature(ctx, externalID, &createSignatureRequest{
Name: defaultSignatureName(email),
HTML: "",
})
}
// bootstrapAccountDefaults creates the default send identity and linked signature for a new mail account.
func (s *Service) bootstrapAccountDefaults(ctx context.Context, externalID, accountID, email, accountName string) error {
sigID, err := s.ensureIdentityDefaultSignature(ctx, externalID, email)
if err != nil {
return err
}
_, err = s.CreateIdentity(ctx, externalID, accountID, &createIdentityRequest{
Email: strings.TrimSpace(email),
Name: identityDisplayName(accountName, email),
IsDefault: true,
DefaultSignatureID: sigID,
ReplyToAddrs: []string{},
})
return err
}