попробуйте использовать setContent вместо setText
так для вашего примера кода:
Message msg = new MimeMessage(session1);
msg.setFrom(new InternetAddress("abc@xyz.com", "Team Application"));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email, "Dear "+name1+"."));
msg.setSubject("Registration confirmation mail");
msg.setContent("Dear <i>"+name1+"</i>,<br>Thanks for registering with us.", "text/html");
Transport.send(msg);
Лично для этого я использую составное сообщение с текстовой и html версией. Это часть моего собственного кода:
// Unformatted text version
final MimeBodyPart textPart = new MimeBodyPart();
textPart.setText("plain content");
// HTML version
final MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("<b>html content</b>", "text/html");
// Create the Multipart. Add BodyParts to it.
final Multipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(htmlPart);
// Set Multipart as the message's content
msg.setContent(mp);