Java 发送邮件是出现乱码 乱码结果如下:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 发送邮件是出现乱码 乱码结果如下:相关的知识,希望对你有一定的参考价值。

------=_Part_2_276534603.1478851457968
Content-Type: multipart/related; boundary="----=_Part_3_562460513.1478851457968"

------=_Part_3_562460513.1478851457968
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: quoted-printable

<br/>Dear=A3=BA<br/> <br/>=BD=D3=BF=DA=B3=AC=C1=F7=C1=BF=D3=C3=BB=A7=A3=A1<b=
r/><table width=3D"1300" border=3D"1"  rules=3D"cols"><tr><th scope=3D"col">=
=CA=A3=D3=E0=C1=F7=C1=BF </th><th scope=3D"col"> =B9=FD=C6=
=DA=B9=AB=CB=BE=B4=FA=C2=EB </th><th
启动tomct 发送时就会收到这样的的信息

scope=3D"col"> =B9=FD=C6=DA=
=B9=AB=CB=BE=C3=FB=B3=C6 </th><th scope=3D"col"> =D7=DC=C1=F7=C1=
=BF </th><th scope=3D"col"> =D2=D1=CA=B9=D3=C3=C1=F7=C1=BF <=
/th><th scope=3D"col"> =BD=D3=BF=DAcode </th><th scope=3D"col">&nb=
sp;=BD=D3=BF=DA=C3=FB=B3=C6 </th><th scope=3D"col"> =C8=D5=BE=F9=
=C1=F7=C1=BF=A3=A830=CC=EC=C4=DA=A3=A9 </th><th scope=3D"col"> =
=D4=A4=BC=C6=BF=C9=D3=C3=CA=B1=BC=E4/=CC=EC </th></tr><tr><td>-1675841=
</td><td>SZKPJK</td><td>=CB=D5=D6=DD=BF=EC=C6=BD=BA=BD=BF=D5=C6=B1=CE=F1=B7=
=FE=CE=F1=D3=D0=CF=DE=B9=AB=CB=BE</td><td>150</td><td>1675991</td><td>SERRCH=
_POLICY_4_UPDATETIME</td><td>=CD=AC=B2=BD=D5=FE=B2=DF[PQ2]</td><td>0</td><td=
>-1675841</td></tr></table>

参考技术A 如果是中文乱码可以通过设置编码来解决追问

我尝试过设置编码来解决 最终无果。这个应用邮件标题用英文 收到的邮件都是无标题

java email发送

今天自己封装了email发送,做了一个对外的接口,目前支持text/html类型,打算明天支持直接文字类型以及html文件类型,先上传目前的封装代码。(2016/8/29)。

 

我在写这段代码的时候出现了正文乱码现象,调整了一个小时也没有找出问题,换成英文可以正常发送,但是里面包含中文就是乱码并且时而发送邮件失败。但是调整一个小时后自己突然好了,无论我改什么编码类型都能正常解码,我对照了原来自己的代码也是一摸一样,我对此百思不得其解,目前也没有发现问题。

我是maven管理项目,所以在pom.xml文件导入两个jar包依赖

<!--发送Email-->
    <dependency>
      <groupId>commons-email</groupId>
      <artifactId>commons-email</artifactId>
      <version>1.1</version>
    </dependency>
      <dependency>
          <groupId>javax.activation</groupId>
          <artifactId>activation</artifactId>
          <version>1.1.1</version>
      </dependency>

 建立一个SendMail类封装数据

package com.yuyang.Common;

import org.apache.commons.mail.MultiPartEmail;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.swing.plaf.PanelUI;
import java.util.Date;
import java.util.Properties;


/**
 * Created by yangyu on 16/8/29.
 */
public class SendMail {

   private static Properties props = null;//初始化链接邮件会话信息
    // 邮件发送协议
    private final static String PROTOCOL = "smtp";
    // SMTP邮件服务器
    private final static String HOST = "smtp.163.com";
    // SMTP邮件服务器默认端口
    private final static String PORT = "25";
    // 是否要求身份认证
    private final static String IS_AUTH = "true";
    // 是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
    private final static String IS_ENABLED_DEBUG_MOD = "true";

    static {
        props = new Properties();
        props.setProperty("mail.transport.protocol", PROTOCOL);
        props.setProperty("mail.smtp.host", HOST);
        props.setProperty("mail.smtp.port", PORT);
        props.setProperty("mail.smtp.auth", IS_AUTH);
        props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);
    }

    /**
     *
     * 发送简单的HTML邮件
     * */
     public static void sendTextEmail(String to,String subject,String content) throws Exception{
         // 创建Session实例对象
         Session session = Session.getDefaultInstance(props);

         //创建发送信息的对象,并加入配置文件
         MimeMessage message = new MimeMessage(session);

         //设置发件人
         message.setFrom(new InternetAddress("[email protected]"));

         //设置主题
         message.setSubject(subject);

         // 设置收件人
         message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));

         // 设置发送时间
         message.setSentDate(new Date());

         //设置html内容为邮件正文,指定MIME类型为text/html类型,并指定字符编码为utf-8


         message.setContent(content,"text/html;charset=utf-8");

         // 保存并生成最终的邮件内容
         message.saveChanges();

         // 发送邮件
         // 获得Transport实例对象
         Transport transport = session.getTransport();
         // 打开连接
         transport.connect("[email protected]", "blue208115501");
         // 将message对象传递给transport对象,将邮件发送出去
         transport.sendMessage(message, message.getAllRecipients());
         // 关闭连接
         transport.close();

     }

}

最后我用junit4进行测试

import com.yuyang.Common.SendMail;
import org.junit.Test;

/**
 * Created by yangyu on 16/8/29.
 */
public class SendMailTest {

    @Test
    public void testSendMail() throws Exception {
        SendMail.sendTextEmail("[email protected]","测试","<span style=‘color:red;‘>这是您的验证码:123123</span>");
    }
}

 

以上是关于Java 发送邮件是出现乱码 乱码结果如下:的主要内容,如果未能解决你的问题,请参考以下文章

用JAVA发送邮件,正文乱码该如何解决

我发送的邮件人家怎么看着是乱码??

解决ci框架php发送邮件附件中文乱码问题

在ASP.NET中用System.Web.Mail类发邮件在发送指令中出现乱码是怎么回事???

使用 javamail api 发送的 html 电子邮件正文在 Outlook 中出现乱码

java servlet 中文乱码问题解决