如何获得确切的字节?

时间:2016-12-09 19:41:39

标签: java android smtp

我想在正文中发送一封包含9个特定字节的电子邮件:

byte one = (byte) 161;
byte two = (byte) 1;
byte three = (byte) 254;
byte four = (byte) 1;
byte five = (byte) 255;
byte six = (byte) 255;
byte seven = (byte) 255;
byte eight = (byte) 254;
byte nein = (byte) 255;

String unicode = new String(new byte[] { one, two, three, four, five, six, seven, eight, nein }, "windows-1258");
emailMessage.setText(unicode);

每次我发送这些字节时,另外9个字节到达目的地。我怎样才能做到这一点?

Receiver的字符串enconding对我来说无关紧要。我对角色如何在视觉上显示不感兴趣。我更关注信息,角色中的十六进制值。

1 个答案:

答案 0 :(得分:2)

有一个相对较好的解释here或者您可以自己阅读RFC 1341.

基本上,电子邮件中只允许(未编码)7位US-ASCII字符。必须使用某种编码对其他任何内容(包括您的二进制字节)进行编码。这会将您的9个字节转换为超过9个字节(取决于所选的编码)。

电子邮件(SMTP)不是二进制协议。您可以通过电子邮件发送二进制数据,但它基本上是一个黑客。