关于使用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进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
第90行,setSubject("")
6. **发送邮件**:使用 `Transport` 类发送邮件。 #### 五、示例代码分析 根据提供的部分代码示例,我们可以进一步了解如何使用 JavaMail 发送 HTML 格式的邮件。 ##### 1. 读取邮件模板 ```java public class ...
2. **SMTP服务器配置**: 在使用JavaMail发送邮件时,首先需要配置SMTP服务器的相关信息,包括主机地址、端口号、用户名和密码。这些信息通常在应用的配置文件中定义,以便在程序运行时加载。 3. **MIME消息**: ...
下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...
利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...
- **发送邮件**:通过 Transport.send() 方法将 MimeMessage 发送到邮件服务器。 3. **SMTP 配置** - **SMTP 服务器**:邮件发送通常通过 Simple Mail Transfer Protocol (SMTP) 进行,需要提供 SMTP 服务器地址...
要发送邮件,你需要创建一个`Session`对象,这是JavaMail的基础,用于设置邮件服务器的相关参数,如用户名、密码、服务器地址等。然后,你可以创建一个`MimeMessage`对象,它是邮件内容的容器,可以设置主题、正文...
为了使用 JavaMail 发送邮件,首先需要配置好 JavaMail 的环境。本示例以 QQ 邮箱为例,假设已经获取到了 QQ 邮箱提供的 SMTP 授权码。 ```java // 导入必要的类库 import javax.mail.Authenticator; import javax....
在本案例中,我们将关注如何使用JavaMail发送带有多个附件且不出现中文乱码的邮件,特别是通过163邮箱服务提供商。 1. **JavaMail API基础**: JavaMail API提供了一系列的类和接口,如`Session`,`Message`,`...
在JavaMail邮件发送的Servlet中,开发者会使用`Session`对象来获取邮件服务器的连接,然后创建`MimeMessage`对象,设置邮件属性,最后通过`Transport.send()`方法发送邮件。 在接收邮件方面,通常会使用IMAP或POP3...
`SendEmail.java`类是邮件发送的测试类,它使用`ReadPropertity`类获取配置文件中的属性值,然后实例化`EmailHandle`对象并调用相应的方法发送邮件。 要实现邮件发送功能,你需要在项目中引入相应的JavaMail库,如`...
在发送邮件时,使用`MimeMessageHelper`的`addInline()`方法将图片文件与这个标识关联,这样在收件人查看邮件时,图片就会正确显示在邮件内容中。 至于附件,我们可以使用`MimeMessageHelper`的`addAttachment()`...
总结来说,JavaMail开发原理主要包括理解邮件服务的基本概念,如邮件服务器、电子邮箱、SMTP和POP3协议,以及如何使用JavaMail API创建和发送邮件。开发者还需要熟悉邮件传输过程中可能出现的问题和解决策略,以确保...
使用JavaMail发送邮件的一般步骤如下: 1. **初始化 Session**:首先,你需要创建一个 `Properties` 对象,并设置SMTP服务器的相关属性,如主机名(host)、端口号(port),如果是SSL或TLS安全连接,还需要开启...
在实际开发中,还会遇到一些常见问题,如中文附件的乱码问题、Tomcat中JavaMail的兼容性和冲突问题,以及如何高效地实现邮件群发。 邮件开发涉及的基本概念包括邮件服务器和电子邮箱。邮件服务器扮演着类似现实生活...
在使用 SpringBoot 发送邮件时,经常会遇到附件名称中文乱码的问题。本文将详细介绍解决此问题的方法。 问题分析 在发送邮件时,我们需要将附件名称编码,以便正确地传输中文名称。然而,在 SpringBoot 中,如果不...
它包含了一些必要的库和类,使得通过JavaMail API在Android环境中发送邮件变得更加简单。下面我们将深入探讨相关知识点。 首先,JavaMail API是一个开源的API,它提供了标准的Java接口来处理电子邮件。在Android中...