diff --git a/cmd/mailslurper/controllers/ServiceController.go b/cmd/mailslurper/controllers/ServiceController.go index c6a70f1..5f23472 100644 --- a/cmd/mailslurper/controllers/ServiceController.go +++ b/cmd/mailslurper/controllers/ServiceController.go @@ -10,7 +10,7 @@ import ( "net/http" "strconv" "time" - + "strings" "github.com/labstack/echo" "github.com/mailslurper/mailslurper/pkg/auth/auth" "github.com/mailslurper/mailslurper/pkg/auth/authfactory" @@ -78,6 +78,8 @@ func (c *ServiceController) GetMail(ctx echo.Context) error { var mailID string var result *mailslurper.MailItem var err error + var mailBody string + var convertSucess bool context := contexts.GetAdminContext(ctx) @@ -90,6 +92,11 @@ func (c *ServiceController) GetMail(ctx echo.Context) error { c.Logger.Errorf("Problem getting mail item %s - %s", mailID, err.Error()) return context.String(http.StatusInternalServerError, "Problem getting mail item") } + if mailBody, convertSucess = c.ConvertFromBase64(result.Body); convertSucess==true{ + result.Body=mailBody + result.HTMLBody=mailBody + } + c.Logger.Infof("Mail item %s retrieved", mailID) return context.JSON(http.StatusOK, result) @@ -203,6 +210,8 @@ func (c *ServiceController) GetMailMessage(ctx echo.Context) error { var mailID string var mailItem *mailslurper.MailItem var err error + var mailBody string + var convertSucess bool context := contexts.GetAdminContext(ctx) @@ -215,11 +224,25 @@ func (c *ServiceController) GetMailMessage(ctx echo.Context) error { c.Logger.Errorf("Problem getting mail item %s in GetMailMessage - %s", mailID, err.Error()) return context.String(http.StatusInternalServerError, "Problem getting mail item") } + if mailBody, convertSucess = c.ConvertFromBase64(mailItem.Body); convertSucess==true{ + return context.HTML(http.StatusOK, mailBody) + } c.Logger.Infof("Mail item %s retrieved", mailID) return context.HTML(http.StatusOK, mailItem.Body) } +func (c *ServiceController ) ConvertFromBase64(s string) (string,bool) { + var mailBody []byte + var err error + + if mailBody, err = base64.StdEncoding.DecodeString(strings.Replace( s, " ", "", -1) ); err == nil { + return string(mailBody[:]),true + } + return "",false + +} + /* GetPruneOptions retrieves the set of options available to users for pruning