想在Java中发送Email,首先要大概了解IMAP(Internet Mail Access Protocol),POP3(Post Office Protocol - Version 3),SMTP(Simple Mail Transfer Protocol)三种协议。
IMAP和POP3最大不同是:开启IMAP后,在电子邮件客户端收取的文件依然保存在服务器上,一举一动都会在服务器端同步。而POP3允许用户从服务器把邮件存储到本地主机,同时删除保存在服务器上的邮件。
SMTP即简单邮件传输协议,它属于TCP/IP协议簇有了此协议必须在提供账户和密码后才能登录SMTP服务器
进入邮箱(以网易邮箱为例)找到上方设置根据自己喜好打开一到两个服务

保存授权码

以下为代码实现

把上面封装便于后期使用
下面为发送文件
public static void main(String[] args) {
Session session = Utils.createSession();
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress("****8***@126.com"));//发送方地址
msg.setRecipient(RecipientType.TO, new InternetAddress("********@qq.com"));//接受方地址
msg.setSubject("这是主题","utf-8");
msg.setText("这是正文","utf-8","html");
Multipart multipart = new MimeMultipart();//创建复合对象
BodyPart text = new MimeBodyPart();//添加TEXT,一个MimeMultipart可以添加多个BodyPart第一个是正文其余为附件
StringBuffer body = new StringBuffer();
body.append("<h1>123</h1>");//可用HTML对其进行修改
body.append("img src = \"cid:1234\"/>");
text.setContent(body.toString(),"\"text/html;charset=utf-8\"");//添加文本内容
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
带有附件的邮件
// 创建MimeMessage邮件信息(省略)
// ..省略
// 创建Multipart复合对象来存放所有内容第一个BodyPart 为主题其余BodyPart为附件
Multipart multipart = new MimeMultipart();
// 添加text:
BodyPart textpart = new MimeBodyPart();
textpart.setContent(body, "text/html;charset=utf-8");
multipart.addBodyPart(textpart);
// 添加image:
BodyPart imagepart = new MimeBodyPart();
imagepart.setFileName(附件名称);
imagepart.setDataHandler(new DataHandler(new ByteArrayDataSource(文件流字节数组, "application/octet-stream")));
multipart.addBodyPart(imagepart);
// 设置邮件内容为multipart:
message.setContent(multipart);
1610





