我希望在发送之前显示电子邮件的大致尺寸。我正在使用java / jsp / js。
我输入如下
<html>
......
<img src="xyz.jpg"/>
......
</html>
现在,我正在计算电子邮件大小,如下所示。
由于html作为邮件正文发送,我正在获取整个html内容并获取字节大小
strSize = content.getBytes().length;
我通过阅读图像和获取长度来获取图像大小
URL url = new URL(imageurl);
InputStream is = url.openStream();
byte[] b = new byte[2048];
int length = 0;
while((length = is.read(b)) != -1) {
totalLength += length;
}
稍后我将添加字符串大小和图像大小。但是在发送之前我收到的电子邮件大小和大小都不同。还有什么我应该考虑的,还是我做错了?
提前谢谢。
答案 0 :(得分:3)
获得准确大小的唯一方法是创建自己的OutputStream来计算写入的所有字节但不对它们执行任何操作,然后使用msg.writeTo()将消息写入该OutputStream,并在完成后询问它写了多少字节。
答案 1 :(得分:1)
您应该考虑邮件可以使用quoted-printable和/或uuencoded进行编码。您应该在打包之后但在发送之前收到原始消息,并检查其长度。
答案 2 :(得分:1)
你正在尝试做一些相当棘手的事情。考虑一下:
电子邮件由标题和正文组成:
标题由一些行组成,这些行包含您提供的信息(标题,电子邮件地址等),邮件发送代理添加的其他行,以及由转移代理和接收添加的更多行程序
最简单的身体只包括几乎逐字传递的文本行。但是大多数电子邮件正文实际上是MIME编码的,并且MIME编码添加了说明每个“部分”开始和结束的位置,类型是什么等等的东西。并且一些非文本的部分(例如图像)需要被编码为文本字符,以便它们可以安全地传输。
当您将所有这些内容组合在一起时,您会发现确定电子邮件的各个部分有多大的过程非常复杂。
可能更简单的方法是创建一个虚拟邮件传输代理,在那里发送邮件,然后通过粗略解析传输的邮件来测量其整体大小和组件的大小。但即使这是一项非常重要的任务。