Spring JavaMailSenderImpl发送邮件时中文乱码处理

<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
	    <property name="host" value="smtp.163.com"/>
	    <property name="port" value="25"/>
	    <property name="username" value="[email protected]"/>
	    <property name="password" value="123456"/>
	    <!-- <property name="defaultEncoding" value="UTF-8"/> -->
	    <!-- <property name="javaMailProperties">  
           <props>  
               验证身份  
               <prop key="mail.smtps.auth">true</prop>  
               <prop key="mail.smtp.ssl.enable">true</prop>  
            <prop key="mail.transport.protocol">smtps</prop>  
          </props>  
       </property>  -->
	</bean>

上面是在spring中配置邮件发送器的代码,其中设置了默认编码为UTF-8。但是在实际的应用中会554的错误,因为乱码导致发出的邮件被识别为垃圾邮件。

try {
        	MimeMessage message = javaMailSender.createMimeMessage();
    		MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    		helper.setFrom("[email protected]");
    		helper.setTo("[email protected]");
    		helper.setSubject("交换契约");
    		helper.setText("你好,很高兴认识你!");
    		
    		UrlResource ur = new UrlResource("http://192.168.1.109:8089/common/2016/11/11/20161111141623053228.png");
    		helper.addAttachment("附件.jpg", ur);
        	javaMailSender.send(message);
        }
        catch (MailException ex) {
            // simply log it and go on...
            ex.printStackTrace();
        } catch (MessagingException e) {
			e.printStackTrace();
		}
在上面的代码中,加入MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");这句话。在编码层中明确使用UTF-8编码,这样的话就不会出现乱码了。

猜你喜欢

转载自blog.csdn.net/cgs666/article/details/53306396