Использование Writer для отправки электронного письма с корейским текстом выводит мусор - PullRequest
1 голос
/ 26 апреля 2019

Мое приложение программно отправляет электронные письма.Это работает, когда тело - текст на английском языке, но когда тело - корейский, это выходит как мусор.Например, отправка «테스트» приводит к «???».

Вот код, который я использую для отправки электронного письма:

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();
        }
    }

1 Ответ

1 голос
/ 26 апреля 2019

Укажите кодировку символов при создании клиента, например,

AuthenticatingSMTPClient client =
    new AuthenticatingSMTPClient(SMTPSClient.DEFAULT_PROTOCOL, "UTF-8");
...