Last active
April 24, 2017 11:42
-
-
Save muzfr7/27aec83f5af3072b54d4cfb2a8f377da to your computer and use it in GitHub Desktop.
Sending HTML Email in Symfony using SwiftMailer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
parameters: | |
# .... | |
# working mailer | |
mailer_transport: gmail | |
mailer_host: smtp.gmail.com | |
mailer_user: [email protected] | |
mailer_password: passwordForEmail |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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('[email protected]'=>'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(), | |
); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- 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"> </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"> </td> | |
</tr> | |
</table> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment