A common practice is to handle emails using the same template language used for HTML pages. If your view supports the 'render' method (Like the TT view does), you just set the body like this: $c->email( header => [ To => 'me@localhost', Subject => 'A TT Email', ], body => $c->view('TT')->render($c,'mytemplate.tt'), }

If your view doesn't support render, you can just forward to it, then reset the body like this: