복붙노트

[SPRING] 유니 코드 문자와 스프링 JavaMailSenderImpl, 리눅스에서 유니 코드 문자가 없습니다!

SPRING

유니 코드 문자와 스프링 JavaMailSenderImpl, 리눅스에서 유니 코드 문자가 없습니다!

나는 Spring과 JavaMailSenderImpl이라는 유명한 스프링 클래스를 사용하여 이메일을 보낸다. 내 이메일에는 èéàò 또는 가장 두드러진 두려운 € 기호와 같은 많은 유니 코드 문자가 포함되어 있습니다. 윈도우에서 실행하면 클래스가 잘 작동합니다. 전송 된 이메일은 모든 문자 (일반 텍스트, html 없음)와 함께 표시됩니다. Linux 가상 서버에 내 앱을 설치하면 모두 얻을 수 있습니까? 특수 문자 대신. 스프링, Java 구성 또는 다른 것이 있습니까?

최신 정보

기본적으로 아키텍처는 다음과 같습니다. Spring Web Application이 있으며 Spring JavaMailSenderImpl을 사용하여 작업을 완료합니다. 이것은 서블릿 컨텍스트의 구성입니다.

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="${email.server}" />
    <property name="username" value="${email.server_user}"></property>
    <property name="password" value="${email.server_pass}"></property>
</bean>

Windows 및 Linux에서 동일한 호스트를 사용하여 메일을 전송합니다 (응용 프로그램이 실행되는 동일한 컴퓨터가 아닙니다 ... SMTP를 통한 표준 메일 서비스 공급자).

이메일을 보내는 데 사용하는 코드는 간단합니다.

SimpleMailMessage msg = new SimpleMailMessage();
            msg.setTo(adminEmail);
            msg.setFrom(adminEmail);
            msg.setSubject(subject);
            msg.setText(message);
            mailSender.send(msg);

심지어 설정 :

System.setProperty("mail.mime.charset", "utf8");

응용 프로그램 시작시 상황을 해결하지 못합니다. 사실, 내가 오기 전에? € 대신에, 지금 나는 get을 얻는다.

해결법

  1. ==============================

    1.필자의 경우 JavaMailSenderImpl의 defaultEncoding을 지정하여 인코딩 문제를 해결했습니다.

    필자의 경우 JavaMailSenderImpl의 defaultEncoding을 지정하여 인코딩 문제를 해결했습니다.

    mailSender = new JavaMailSenderImpl();
    ...
    mailSender.setDefaultEncoding("UTF-8");
    

    나는 당신이 빈 설정에서 값을 설정할 수도 있다고 믿는다.

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        ...
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    
  2. ==============================

    2.나는 해결책을 게시하고있다.

    나는 해결책을 게시하고있다.

    먼저 소스 코드의 인코딩 (인라인 텍스트가있는 경우)을 확인하십시오. Eclipse에서 프로젝트 속성을 선택하면 첫 번째 화면이됩니다. 경고 : 나중에 변경하면 텍스트가 손상됩니다.

    둘째 MimeMailMessage를 사용하면 다음과 같이 인코딩을 지정할 수 있습니다.

    MimeMessage msg = mailSender.createMimeMessage();
    
            msg.addRecipient(RecipientType.TO, new InternetAddress(adminEmail));
            msg.addFrom(new InternetAddress[] { new InternetAddress(adminEmail) });
    
            msg.setSubject(subject, "UTF-8");
            msg.setText(message, "UTF-8");  
            mailSender.send(msg);
    

    셋째, mail.mime.charset 시스템 속성이 Java 명령이나 다음과 같은 코드에서 UTF-8로 설정되어 있는지 확인하십시오.

    System.setProperty("mail.mime.charset", "utf8");
    

    이 문제를 해결하는 데 도움을 준 모두에게 감사드립니다.

  3. ==============================

    3.이 문제는 바이트 배열 (예 : 파일 읽기)과 java.lang.String을 변환 할 때 발생합니다. 응용 프로그램의 아키텍처에 대해 더 자세히 설명해 주시겠습니까?

    이 문제는 바이트 배열 (예 : 파일 읽기)과 java.lang.String을 변환 할 때 발생합니다. 응용 프로그램의 아키텍처에 대해 더 자세히 설명해 주시겠습니까?

  4. from https://stackoverflow.com/questions/5636255/unicode-chars-and-spring-javamailsenderimpl-no-unicode-chars-under-linux by cc-by-sa and MIT license