用java向手机发送HTML文本信息

用java向手机发送HTML文本信息,java,html,email,jakarta-mail,Java,Html,Email,Jakarta Mail,我目前有一个程序,根据我数据库中的信息向用户发送电子邮件。电子邮件以html格式构建,并以内容类型text/html的形式发送给用户。我想尝试一下,看看我是否可以用电子邮件格式将此消息发送到他们的手机上 显然,手机无法接收HTML消息,因此我尝试了以下方法: -删除html并发送纯文本,这确实有效,但是对于Verizon(我测试过的唯一服务提供商),文本被切断,完整消息从未发送。我只收到了信息的第一部分 然后我想知道是否有可能以某种方式“截屏”html信息,并简单地将html显示的图片发送到手机

我目前有一个程序,根据我数据库中的信息向用户发送电子邮件。电子邮件以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,得到了相同的结果