Skip to content

Instantly share code, notes, and snippets.

@muzfr7
Last active April 24, 2017 11:42
Show Gist options
  • Save muzfr7/27aec83f5af3072b54d4cfb2a8f377da to your computer and use it in GitHub Desktop.
Save muzfr7/27aec83f5af3072b54d4cfb2a8f377da to your computer and use it in GitHub Desktop.
Sending HTML Email in Symfony using SwiftMailer
parameters:
# ....
# working mailer
mailer_transport: gmail
mailer_host: smtp.gmail.com
mailer_user: register@domain.com
mailer_password: passwordForEmail
<?php
namespace DefaultBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use ModelBundle\Entity\Candidate;
use DefaultBundle\Form\CandidateType;
/**
* Account controller.
* This controller is used for Candidate Registeration
*
* @return Response
* @Route("/")
*/
class AccountController extends Controller
{
/**
* @Route("/register")
* @Method({"GET", "POST"})
* @Template()
*/
public function registerAction(Request $request)
{
$candidate = new Candidate();
$form = $this->createForm(CandidateType::class, $candidate);
$form->handleRequest($request);
if ($form->isSubmitted())
{
$formData = $form->getData();
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($candidate);
$em->flush();
/*
* Send Email
*/
if( !empty($formData->getEmail()) )
{
$emailAddress = trim($formData->getEmail());
if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL) === false)
{
$message = \Swift_Message::newInstance()
->setSubject('Registration Successful')
->setFrom(array('noreply@domain.com'=>'Registration'))
->setTo($emailAddress)
->setBody(
$this->renderView(
'emails/registration.html.twig',
array(
'name' => ucfirst($formData->getFirstname()).' '.ucfirst($formData->getLastname()),
'username' => $formData->getUsername(),
'password' => $formData->getUsername(),
)
),
'text/html'
);
$this->get('mailer')->send($message);
}//end: email validation
}
$this->get('session')->getFlashBag()->set('success', 'Registration successful..');
return $this->redirect($this->generateUrl('default_account_login'));
}
}
return array(
'form' => $form->createView(),
);
}
}
<!-- App/Resources/views/emails/registration.html.twig -->
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Registration Successful</title>
<style media="all" type="text/css">
@media all {
.btn-primary table td:hover {
background-color: #34495e !important;
}
.btn-primary a:hover {
background-color: #34495e !important;
border-color: #34495e !important;
}
}
@media all {
.btn-secondary a:hover {
border-color: #34495e !important;
color: #34495e !important;
}
}
@media only screen and (max-width: 620px) {
table[class=body] h1 {
font-size: 28px !important;
margin-bottom: 10px !important;
}
table[class=body] h2 {
font-size: 22px !important;
margin-bottom: 10px !important;
}
table[class=body] h3 {
font-size: 16px !important;
margin-bottom: 10px !important;
}
table[class=body] p,
table[class=body] ul,
table[class=body] ol,
table[class=body] td,
table[class=body] span,
table[class=body] a {
font-size: 16px !important;
}
table[class=body] .wrapper,
table[class=body] .article {
padding: 10px !important;
}
table[class=body] .content {
padding: 0 !important;
}
table[class=body] .container {
padding: 0 !important;
width: 100% !important;
}
table[class=body] .header {
margin-bottom: 10px !important;
}
table[class=body] .main {
border-left-width: 0 !important;
border-radius: 0 !important;
border-right-width: 0 !important;
}
table[class=body] .btn table {
width: 100% !important;
}
table[class=body] .btn a {
width: 100% !important;
}
table[class=body] .img-responsive {
height: auto !important;
max-width: 100% !important;
width: auto !important;
}
table[class=body] .alert td {
border-radius: 0 !important;
padding: 10px !important;
}
table[class=body] .span-2,
table[class=body] .span-3 {
max-width: none !important;
width: 100% !important;
}
table[class=body] .receipt {
width: 100% !important;
}
}
@media all {
.ExternalClass {
width: 100%;
}
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%;
}
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important;
}
}
</style>
</head>
<body class="" style="font-family: sans-serif; -webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #f6f6f6; margin: 0; padding: 0;">
<table border="0" cellpadding="0" cellspacing="0" class="body" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background-color: #f6f6f6;" width="100%" bgcolor="#f6f6f6">
<tr>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;" valign="top">&nbsp;</td>
<td class="container" style="font-family: sans-serif; font-size: 14px; vertical-align: top; display: block; Margin: 0 auto !important; max-width: 580px; padding: 10px; width: 580px;" width="580" valign="top">
<div class="content" style="box-sizing: border-box; display: block; Margin: 0 auto; max-width: 580px; padding: 10px;">
<p><img src="http://yourDomain.com/repo/logo-small.png" /></p>
<!-- START CENTERED WHITE CONTAINER -->
<table class="main" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background: #fff; border-radius: 3px;" width="100%">
<!-- START MAIN CONTENT AREA -->
<tr>
<td class="wrapper" style="font-family: sans-serif; font-size: 14px; vertical-align: top; box-sizing: border-box; padding: 20px;" valign="top">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;" width="100%">
<tr>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;" valign="top">
<div style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0;">
<p>Dear {{ name }},</p>
<p>Thank You for registration, following are your login crendential:</p>
<p>
<b>Login:</b> http://subdomain.domain.com
<br />
<b>Username:</b> {{ username }}
<br />
<b>Password:</b> {{ password }}
</p>
<p>Best Regards,<br />Your Team</p>
</div>
</td>
</tr>
</table>
</td>
</tr>
<!-- END MAIN CONTENT AREA -->
</table>
<!-- START FOOTER -->
<div class="footer" style="clear: both; padding-top: 0px; text-align: center; width: 100%;">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;" width="100%">
<tr>
<td class="content-block" style="font-family: sans-serif; vertical-align: top; padding-top: 10px; padding-bottom: 10px; font-size: 12px; color: #999999; text-align: center;" valign="top" align="center">
<span class="apple-link" style="color: #999999; font-size: 13px; text-align: center;">Name of your company</span><br />
P.O.Box: 111, New York 51941<br />
State, Country
</td>
</tr>
</table>
</div>
<!-- END FOOTER -->
<!-- END CENTERED WHITE CONTAINER --></div>
</td>
<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;" valign="top">&nbsp;</td>
</tr>
</table>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment