codeword/internal/adapters/client/mail.go

37 lines
1.1 KiB
Go
Raw Normal View History

2023-12-29 11:30:20 +00:00
package client
2023-12-31 12:22:03 +00:00
import (
"fmt"
"net/smtp"
)
2023-12-29 11:30:20 +00:00
2023-12-31 12:22:03 +00:00
type RecoveryEmailSender struct {
SmtpHost string
SmtpPort string
Username string
Password string
ApiKey string
}
2023-12-29 11:30:20 +00:00
// SendRecoveryEmail отправляет email с подписью для восстановления доступа
func (r *RecoveryEmailSender) SendRecoveryEmail(email, signature string) error {
2023-12-31 12:22:03 +00:00
// прост как пример пока что
message := fmt.Sprintf("To: %s\r\n"+
"Subject: Восстановление доступа\r\n"+
"\r\n"+
"Чтобы восстановить доступ, пожалуйста, перейдите по ссылке ниже:\r\n"+
" https://hub.pena.digital/codeword/restore/%s\r\n", email, signature)
auth := smtp.PlainAuth("", r.Username, r.Password, r.SmtpHost)
err := smtp.SendMail(r.SmtpHost+":"+r.SmtpPort, auth, r.Username, []string{email}, []byte(message))
if err != nil {
fmt.Printf("Ошибка при отправке письма: %s\n", err)
return err
}
2023-12-29 11:30:20 +00:00
2023-12-31 12:22:03 +00:00
fmt.Printf("Письмо для восстановления доступа отправлено на: %s\n", email)
2023-12-29 11:30:20 +00:00
return nil
}