gpt4 book ai didi

java - 用java发送HTML文本消息到手机

转载 作者:行者123 更新时间:2023-12-01 13:18:44 25 4
gpt4 key购买 nike

我目前有一个程序,可以根据用户在我的数据库中的信息向用户发送电子邮件。电子邮件以 html 格式构建,并以内容类型 text/html 发送给用户电子邮件。我想尝试看看是否可以使用电子邮件格式 ##########@domain.com 将此消息发送到他们的手机。

显然手机无法接收 HTML 消息,所以我尝试了以下方法:

-删除了 html 并发送纯文本,这确实有效,但是对于 Verizon(我测试的唯一服务提供商)来说,文本被切断,完整的消息从未发送。我只收到了消息的第一部分。

然后我想知道是否有可能以某种方式“截图”html消息并将html显示的图片发送到手机。

这是我当前发送电子邮件的代码:

public static void email(String content, String address) {

final String username = "email";
final String password = "password";

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});

try {


Message message = new MimeMessage(session);
Address[] a = InternetAddress.parse("myemail");
message.setReplyTo(a);
message.setHeader("From: ", "Movie Alert");
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(address));

if (ShowFinder.showsFound > 1) message.setSubject("Movie Alert: " + ShowFinder.showsFound + " New Shows Found!");
else if (ShowFinder.showsFound == 1) message.setSubject("Movie Alert: " + ShowFinder.showsFound + " New Show Found!");
else message.setSubject("Unsubscribed");

StringBuilder sb = new StringBuilder();
sb.append(content);
message.setContent(sb.toString(), "text/html");

Transport.send(message);


System.out.println("Sent Email");

} catch (MessagingException e) {
throw new RuntimeException(e);
}
}

总而言之,我有以下问题:

-文本被截断的原因是因为我没有正确发送电子邮件,还是因为服务提供商?

-能否根据html代码通过短信发送html显示的截图?

谢谢!

最佳答案

我找到了向手机发送 html 消息的解决方案!有一个名为 HTML2Image 的 jar,可以将您的 html 代码转换为图像:https://code.google.com/p/java-html2image/

要制作 html 图像,您需要执行以下操作:

    HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
imageGenerator.loadHtml("<b>Hello World!</b> Please goto <a title=\"Goto Google\" href=\"http://www.google.com\">Google</a>.");
imageGenerator.saveAsImage("hello-world.png");

然后你可以像这样发送这个新图像:

                    Multipart mp = new MimeMultipart();
Message message = new MimeMessage(session);
MimeBodyPart mbp1 = new MimeBodyPart();
MimeBodyPart mbp2 = new MimeBodyPart();
message.setFrom(new InternetAddress("email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toEmail));
mbp1.setText(text);
mp.addBodyPart(mbp1);

DataSource source = new FileDataSource(new File("screenshot location/hello-world.png"));
mbp2.setDataHandler(new DataHandler(source));
mbp2.setFileName("Screenshot.png");
mbp2.setHeader("Content-ID", "<image_cid>");
mp.addBodyPart(mbp2);

message.setContent(mp);
Transport.send(message);

关于java - 用java发送HTML文本消息到手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22231046/

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