45 lines
1.2 KiB
Go
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
|
|
}
|