Мое приложение программно отправляет электронные письма. Это работает, когда тело - текст на английском языке, но когда тело - корейский, это выходит как мусор. Например, отправка "테스트" приводит к "???".
Вот код, который я использую для отправки электронного письма:
AuthenticatingSMTPClient client = new AuthenticatingSMTPClient();
try {
client.connect(hostname, port);
client.ehlo("localhost");
if (client.execTLS()) {
client.auth(AuthenticatingSMTPClient.AUTH_METHOD.LOGIN, login, password);
client.setSender(from);
client.addRecipient(to);
Writer writer = client.sendMessageData();
if (writer != null) {
SimpleSMTPHeader header = new SimpleSMTPHeader(from, to, subject);
writer.write(header.toString());
writer.write("테스트);
writer.close();
if (!client.completePendingCommand()) {
throw new Exception("Failure to sendLocation the email " + client.getReply() + client.getReplyString());
}
} else {
throw new Exception("Failure to sendLocation the email " + client.getReply() + client.getReplyString());
}
} else {
throw new Exception("STARTTLS was not accepted " + client.getReply() + client.getReplyString());
}
} catch (Exception e) {
throw e;
} finally {
if (client != null) {
client.logout();
client.disconnect();
}
}
Укажите кодировку символов при создании клиента, например
AuthenticatingSMTPClient client =
new AuthenticatingSMTPClient(SMTPSClient.DEFAULT_PROTOCOL, "UTF-8");
AuthenticatingSMTPClient("TLS", "UTF-8")
Edit: только что видел, как вы обновили свой ответ, чтобы включить протокол по умолчанию.