How to Generate QR code and send email using java
Here's an example Java program that generates a QR code and sends it as the body of an email using JavaMail:
Add below dependency in pom.xml or download jar and add to the project
This is the main class, where we can generate QR code and send email<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency>
import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.util.Properties; import javax.activation.DataHandler; import javax.imageio.ImageIO; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; public class QRCodeEmailExample { public static void main(String[] args) throws Exception { String data = "https://example.com"; // the data to encode in the QR code int width = 300; // the width of the QR code int height = 300; // the height of the QR code BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, width, height); BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(image, "png", baos); byte[] imageData = baos.toByteArray(); String from = "sender@example.com"; // the email address of the sender String to = "recipient@example.com"; // the email address of the recipient String subject = "QR code"; // the subject of the email String body = "Please scan the QR code below:"; // the body of the email Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.example.com"); // the SMTP server to use Session session = Session.getDefaultInstance(properties); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(body, "text/html"); MimeBodyPart attachmentBodyPart = new MimeBodyPart(); attachmentBodyPart.setDataHandler(new DataHandler (new ByteArrayDataSource(imageData, "image/png"))); attachmentBodyPart.setFileName("qrcode.png"); MimeMultipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(attachmentBodyPart); message.setContent(multipart); Transport.send(message); System.out.println("Email sent successfully."); } }We can use below one also to send qr code in email
String base64Encoded = Base64.getEncoder().encodeToString(imageData); String htmlBody = "<html><body><h1>QR Code Example</h1><img src=\"data:image/png;base64," + base64Encoded + "\"/></body></html>"; // Set mail server properties Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); // Create a mail session with the specified properties Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your_email@gmail.com", "your_password"); } }); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("QR Code Example"); message.setContent(htmlBody, "text/html"); Transport.send(message);Make sure to replace the example values with your own values for the email addresses, SMTP server, and other details. Also, you'll need to add the required dependencies to your project's classpath, such as JavaMail and ZXing.
Comments
Post a Comment