gpt4 book ai didi

java - 如何在gmail中显示字符串的二维码

转载 作者:行者123 更新时间:2023-12-01 19:05:35 24 4
gpt4 key购买 nike

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

这在 Outlook 中可以正常工作,但在 Gmail 中似乎存在问题。在电子邮件客户端(尤其是 Gmail)中显示此二维码的最佳方式是什么?请注意,我没有实际的图像文件,因为 QR 是根据用户 ID 生成的,最多我只有表示 QR 图像的字节数组。

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

最佳答案

正如这个答案所建议的 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 模板中你应该有 <img src="cid:qrImage" alt="qr code">

关于java - 如何在gmail中显示字符串的二维码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com