【问题标题】:How to display QR code of a string in gmail如何在gmail中显示字符串的二维码
【发布时间】:2020-04-21 02:11:31
【问题描述】:

我有一个带有<img> 标签的 HTML 模板来显示用户 ID 的 QR 码表示,为此我只是按照 https://sendgrid.com/blog/embedding-images-emails-facts/ 下的建议使用了 DATA URL 技术 src="data:image/png;base64, base64String 内联嵌入(Base64 编码)部分。

这在 Outlook 中有效,但 Gmail 似乎存在问题。在电子邮件客户端中显示此 QR 码的最佳方式是什么,尤其是在 Gmail 中。请注意,我没有实际的图像文件,因为 QR 是从用户 ID 生成的,最多我只有表示 QR 图像的字节数组。

我正在使用 sendgrid 发送电子邮件。

【问题讨论】:

    标签: java email gmail sendgrid


    【解决方案1】:

    正如这个答案https://stackoverflow.com/a/29205203/2017536所建议的那样 这是使用 javax.mail 包解决此问题的方法

    @Autowired
    private JavaMailSender mailSender;
    
     private void sendMail(String to, String subject, String bodyPlainText, String bodyHtml, String contentId, String base64Image) {
        try {
            MimeMessage message = mailSender.createMimeMessage();
            message.setSubject(subject);
            message.setFrom(new InternetAddress(from));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
    
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent(bodyPlainText, "text/plain; charset=UTF-8");
    
            MimeBodyPart htmlPart = new MimeBodyPart();
            htmlPart.setContent(bodyHtml, "text/html; charset=UTF-8");
    
            Multipart multiPart = new MimeMultipart("alternative");
    
            // create a new imagePart and add it to multipart so that the image is inline attached in the email
            byte[] rawImage = Base64.getDecoder().decode(base64Image);
            BodyPart imagePart = new MimeBodyPart();
            ByteArrayDataSource imageDataSource = new ByteArrayDataSource(rawImage,"image/png");
    
            imagePart.setDataHandler(new DataHandler(imageDataSource));
            imagePart.setHeader("Content-ID", "<qrImage>");
            imagePart.setFileName("someFileName.png");
    
            multiPart.addBodyPart(imagePart);
            multiPart.addBodyPart(textPart);
            multiPart.addBodyPart(htmlPart);
    
            message.setContent(multiPart);
    
            mailSender.send(message);
        } catch (MessagingException exception) {
            //log error
        }
    }
    

    在你的 html 模板中你应该有&lt;img src="cid:qrImage" alt="qr code"&gt;

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      相关资源
      最近更新 更多