`
cuiyadll
  • 浏览: 204886 次
文章分类
社区版块
存档分类
最新评论

JavaMail发送邮件(乱码)

 
阅读更多

关于使用javamail包发送邮件和邮件编码乱码解决方法

1. 在发送正文时指定正文编码:

   在发送邮件时使用

   MimeBodyPart  body = new MimeBodyPart();

   body.setContent(content, "text/html;charset=GB2312");

   注意此时的content编码必须是所指定的编码格式。

2.  在设置邮件标题时也要指定标题的编码:

   MimeMultipart mmp=new MimeMultipart();

   mmp.setSubject(subject, "GB2312");

   同上也要求subject的编码和指定的编码一致。

3. 发送正文时也可以在header中指定传输编码:

   body.setHeader("Content-Transfer-Encoding", "base64"); // 指定使用base64编码

4. 例子:

[java] view

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.util.Properties; 
import javax.mail.*; 
import javax.mail.internet.*; 
   
public class MailSender { 
    
    public static void main(String[] args) { 
        try 
     String host = "staff.tixa.com"// smtp主机  
     String username = "sample@staff.tixa.com"// 认证用户名  
     String password = "sample"// 认证密码  
     String from = "例子<sample@staff.tixa.com>"// 发送者  
     String to = "toOne@staff.tixa.com, toAnother@staff.tixa.com"// 接受者,用“,”分隔  
     String subject = "测试例子"
     String content = "仅仅是个供测试的例子。"
    
     // 建立session  
     Properties prop = new Properties(); 
     prop.put("mail.smtp.host", host);  
     prop.put("mail.smtp.auth""true"); //是否需要认证  
     Session session = Session.getDefaultInstance(prop, null); 
    
     // 创建MIME邮件对象  
     MimeMessage mimeMsg = new MimeMessage(session); 
     MimeMultipart mp = new MimeMultipart(); 
    
     // 设置信息  
     mimeMsg.setFrom(new InternetAddress(from)); 
     mimeMsg.setSubject(subject, "GB2312"); // !!!注意设置编码  
     mimeMsg.setRecipients( 
         Message.RecipientType.TO, 
  InternetAddress.parse(to)); 
         
     // 设置正文  
     BodyPart body = new MimeBodyPart(); 
     body.setContent(content, "text/plain;charset=GB2312"); // !!!注意设置编码  
     mp.addBodyPart(body); 
     mimeMsg.setContent(mp); 
    
     // 发送邮件  
     Transport transport = session.getTransport("smtp"); 
     transport.connect(host, username, password); 
     transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO)); 
     transport.close(); 
 
 catch(Exception exp) { 
     exp.printStackTrace(); 
 
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class MailSender {
    public static void main(String[] args) {
        try {
     String host = "staff.tixa.com"// smtp主机
     String username = "sample@staff.tixa.com"// 认证用户名
     String password = "sample"// 认证密码
     String from = "例子<sample@staff.tixa.com>"// 发送者
     String to = "toOne@staff.tixa.com, toAnother@staff.tixa.com"// 接受者,用“,”分隔
     String subject = "测试例子";
     String content = "仅仅是个供测试的例子。";
     // 建立session
     Properties prop = new Properties();
     prop.put("mail.smtp.host", host);
     prop.put("mail.smtp.auth""true"); //是否需要认证
     Session session = Session.getDefaultInstance(prop, null);
     // 创建MIME邮件对象
     MimeMessage mimeMsg = new MimeMessage(session);
     MimeMultipart mp = new MimeMultipart();
     // 设置信息
     mimeMsg.setFrom(new InternetAddress(from));
     mimeMsg.setSubject(subject, "GB2312"); // !!!注意设置编码
     mimeMsg.setRecipients(
         Message.RecipientType.TO,
  InternetAddress.parse(to));
       
     // 设置正文
     BodyPart body = new MimeBodyPart();
     body.setContent(content, "text/plain;charset=GB2312"); // !!!注意设置编码
     mp.addBodyPart(body);
     mimeMsg.setContent(mp);
     // 发送邮件
     Transport transport = session.getTransport("smtp");
     transport.connect(host, username, password);
     transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
     transport.close();
 }
 catch(Exception exp) {
     exp.printStackTrace();
 }
}

 

分享到:
评论

相关推荐

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    javamail发送邮件 主题乱码解决

    第90行,setSubject("")

    javamail发送html邮件

    6. **发送邮件**:使用 `Transport` 类发送邮件。 #### 五、示例代码分析 根据提供的部分代码示例,我们可以进一步了解如何使用 JavaMail 发送 HTML 格式的邮件。 ##### 1. 读取邮件模板 ```java public class ...

    jsp/servlet javamail 发送邮件 可发送多个附件

    2. **SMTP服务器配置**: 在使用JavaMail发送邮件时,首先需要配置SMTP服务器的相关信息,包括主机地址、端口号、用户名和密码。这些信息通常在应用的配置文件中定义,以便在程序运行时加载。 3. **MIME消息**: ...

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    使用JavaMail发送复杂邮件源代码

    利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...

    JavaMail 发送邮件

    - **发送邮件**:通过 Transport.send() 方法将 MimeMessage 发送到邮件服务器。 3. **SMTP 配置** - **SMTP 服务器**:邮件发送通常通过 Simple Mail Transfer Protocol (SMTP) 进行,需要提供 SMTP 服务器地址...

    javamail 邮件系统

    要发送邮件,你需要创建一个`Session`对象,这是JavaMail的基础,用于设置邮件服务器的相关参数,如用户名、密码、服务器地址等。然后,你可以创建一个`MimeMessage`对象,它是邮件内容的容器,可以设置主题、正文...

    javamail收发邮件(带附件,正文带图).docx

    为了使用 JavaMail 发送邮件,首先需要配置好 JavaMail 的环境。本示例以 QQ 邮箱为例,假设已经获取到了 QQ 邮箱提供的 SMTP 授权码。 ```java // 导入必要的类库 import javax.mail.Authenticator; import javax....

    Java自带的Java-mail框架 163 邮件发送,支持多附件,没中文乱码

    在本案例中,我们将关注如何使用JavaMail发送带有多个附件且不出现中文乱码的邮件,特别是通过163邮箱服务提供商。 1. **JavaMail API基础**: JavaMail API提供了一系列的类和接口,如`Session`,`Message`,`...

    JavaMail结合JSP实现中文邮件收发系统.rar

    在JavaMail邮件发送的Servlet中,开发者会使用`Session`对象来获取邮件服务器的连接,然后创建`MimeMessage`对象,设置邮件属性,最后通过`Transport.send()`方法发送邮件。 在接收邮件方面,通常会使用IMAP或POP3...

    利用Java发送邮件(含附件)的例子

    `SendEmail.java`类是邮件发送的测试类,它使用`ReadPropertity`类获取配置文件中的属性值,然后实例化`EmailHandle`对象并调用相应的方法发送邮件。 要实现邮件发送功能,你需要在项目中引入相应的JavaMail库,如`...

    spring整合freemarker发送邮件例子

    在发送邮件时,使用`MimeMessageHelper`的`addInline()`方法将图片文件与这个标识关联,这样在收件人查看邮件时,图片就会正确显示在邮件内容中。 至于附件,我们可以使用`MimeMessageHelper`的`addAttachment()`...

    JavaMail开发原理简介PPT

    总结来说,JavaMail开发原理主要包括理解邮件服务的基本概念,如邮件服务器、电子邮箱、SMTP和POP3协议,以及如何使用JavaMail API创建和发送邮件。开发者还需要熟悉邮件传输过程中可能出现的问题和解决策略,以确保...

    javaMail.zip

    使用JavaMail发送邮件的一般步骤如下: 1. **初始化 Session**:首先,你需要创建一个 `Properties` 对象,并设置SMTP服务器的相关属性,如主机名(host)、端口号(port),如果是SSL或TLS安全连接,还需要开启...

    Javamail开发

    在实际开发中,还会遇到一些常见问题,如中文附件的乱码问题、Tomcat中JavaMail的兼容性和冲突问题,以及如何高效地实现邮件群发。 邮件开发涉及的基本概念包括邮件服务器和电子邮箱。邮件服务器扮演着类似现实生活...

    SpringBoot mail中文附件乱码的解决方法

    在使用 SpringBoot 发送邮件时,经常会遇到附件名称中文乱码的问题。本文将详细介绍解决此问题的方法。 问题分析 在发送邮件时,我们需要将附件名称编码,以便正确地传输中文名称。然而,在 SpringBoot 中,如果不...

    android发送邮件的jar包

    它包含了一些必要的库和类,使得通过JavaMail API在Android环境中发送邮件变得更加简单。下面我们将深入探讨相关知识点。 首先,JavaMail API是一个开源的API,它提供了标准的Java接口来处理电子邮件。在Android中...

Global site tag (gtag.js) - Google Analytics