用java向手机发送HTML文本信息
我目前有一个程序,根据我数据库中的信息向用户发送电子邮件。电子邮件以html格式构建,并以内容类型text/html的形式发送给用户。我想尝试一下,看看我是否可以用电子邮件格式将此消息发送到他们的手机上 显然,手机无法接收HTML消息,因此我尝试了以下方法: -删除html并发送纯文本,这确实有效,但是对于Verizon(我测试过的唯一服务提供商),文本被切断,完整消息从未发送。我只收到了信息的第一部分 然后我想知道是否有可能以某种方式“截屏”html信息,并简单地将html显示的图片发送到手机上 以下是我当前发送电子邮件的代码:用java向手机发送HTML文本信息,java,html,email,jakarta-mail,Java,Html,Email,Jakarta Mail,我目前有一个程序,根据我数据库中的信息向用户发送电子邮件。电子邮件以html格式构建,并以内容类型text/html的形式发送给用户。我想尝试一下,看看我是否可以用电子邮件格式将此消息发送到他们的手机上 显然,手机无法接收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代码转换为图像: 要制作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");
HtmlImageGenerator imageGenerator=新的HtmlImageGenerator();
loadHtml(“你好,世界!请转到”);
saveAsImage(“helloworld.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);
Multipart mp=new MimeMultipart();
Message Message=新的mimessage(会话);
MimeBodyPart mbp1=新的MimeBodyPart();
MimeBodyPart mbp2=新的MimeBodyPart();
message.setFrom(新的Internet地址(“电子邮件”));
message.setRecipients(message.RecipientType.TO,
InternetAddress.parse(toEmail));
mbp1.setText(文本);
mp.addBodyPart(mbp1);
DataSource source=新文件DataSource(新文件(“屏幕截图位置/hello world.png”);
mbp2.setDataHandler(新的DataHandler(源));
mbp2.setFileName(“Screenshot.png”);
mbp2.setHeader(“内容ID”,即“”);
mp.addBodyPart(mbp2);
message.setContent(mp);
传输。发送(消息);
只是一个猜测,但您是否尝试了text/plain而不是text/html?或者只使用setText(sb.toString())
我尝试使用setText和text/plain,得到了相同的结果