您的位置:首页 > 编程语言 > Java开发

Javamail简单的发送邮件附件实例

2017-10-26 17:37 627 查看

1.自定义工具类

无聊学了一下简单的附件发送,下面是我自己包装的工具类,方便使用。

有需要的可以的直接用~~~

,下面写的挺细,希望对有需要的有所帮助,本人菜鸟一枚,大神勿喷!!





package com.hy;

import java.io.File;

import java.io.UnsupportedEncodingException;

import java.util.Date;

import java.util.Map;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

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;

public class Multipart_Test {

static String
send = null;// 发送方邮箱

static String
sender = null;// 发件人

static String
pwd = null;// 密码

static String
receive = null;// 接收方邮箱

static String
receiver = null;// 收件人

static String
port = null;// 服务器端口

static String
server = null;// 邮件服务器

public Multipart_Test() {

}

public Multipart_Test(String
send, String sender, String
pwd, String port, String
server, Map<String, String>
map,

String subject, String
attachmentPath, String
text) {

// 配置服务器属性

Properties properties = System.getProperties();

// properties.put("mail.debug", "true");//开启debug调试

properties.put("mail.transport.protocol",
"smtp");// 发送邮件协议名称

properties.put("mail.smtp.host",
server);// 发送邮件服务器

properties.put("mail.smtp.auth",
"true");// 是否开启密码验证

properties.put("mail.smtp.port",
port);// 邮箱端口

properties.put("mail.smtp.starttls.enable",
"true");//
starttls提供一种方式将纯文本连接升级为加密连接(TLS或SSL)

// 获取邮箱服务器配置环境信息

System.out.println("尝试连接--------------");

Session session = Session.getDefaultInstance(properties,
new Authenticator() {

// 设置用户信息 ,在发送邮件时会调用验证

protected PasswordAuthentication getPasswordAuthentication() {

return
new PasswordAuthentication(send,
pwd);

}

});

System.out.println("连接到邮箱");

// Session session = Session.getDefaultInstance(properties);

try {

// 创建信息对象

MimeMessage message =
new MimeMessage(session);

// 创建发送方地址

InternetAddress
fAddress = new InternetAddress(send,
sender, "utf-8");

message.setFrom(fAddress);

//设置接收方及接收类型(收件人:to,抄送:cc,暗送:bcc);

InternetAddress[]
tAddresses = new InternetAddress[map.size()];

int
i = 0;

for (String
K : map.keySet()) {

InternetAddress
to = new InternetAddress(K,
map.get(K),
"utf-8");

tAddresses[i++] =
to;

}

message.setRecipients(Message.RecipientType.BCC,
tAddresses);

//设置发送日期

message.setSentDate(new Date());

//设置回复

message.reply(true);

//设置主题

message.setSubject(subject);

// 设置发送的信息

// 创建附件

// 整封邮件的Mime消息体

Multipart mp =
new MimeMultipart();

// 附件2

MimeBodyPart mbp =
new MimeBodyPart();

// 正文内容

MimeBodyPart content =
new MimeBodyPart();

// 数据源

DataSource ds =
new FileDataSource(new File(attachmentPath));

// 数据处理

DataHandler dh =
new DataHandler(ds);

// 将处理后的数据存入附件

mbp.setDataHandler(dh);

// 设置附件名

mbp.setFileName(ds.getName());

// 添加附件

mp.addBodyPart(mbp);
cd64

// 添加正文

mp.addBodyPart(content);

// 设置邮件的Mime消息体

message.setContent(mp,
"utf-8");

content.setText(text);

message.saveChanges();

// Transport transport = session.getTransport("smtp");

// System.out.println("尝试连接--------------");

// transport.connect(server,send,pwd);

// System.out.println("连接到邮箱");

// transport.sendMessage(message, message.getAllRecipients());

// transport.close();

// 发送信息

// Transport.send(message);

Transport.send(message,
message.getAllRecipients());

System.out.println("发送成功");

} catch (UnsupportedEncodingException
e) {

//
TODO Auto-generated catch block

e.printStackTrace();

} catch (MessagingException
e) {

//
TODO Auto-generated catch block

e.printStackTrace();

}

}

}

2.测试类

package com.hy;

import java.util.HashMap;

import java.util.Map;

import javax.mail.internet.AddressException;

public class Info {

public
static void main(String[]
args) throws AddressException {

String send =
"******@qq.com";// 发送方邮箱

String sender =
"MrS";// 发件人

String pwd =
"izdrxeseoirtbecf";// 发送方密码(smtp邮箱授权码)

String port =
"587";// 发送服务器端口号q~465or587 163邮箱~25

String server =
"smtp.qq.com";// 邮件服务器/smtp.qq.com~smtp.163.com

String[]
receive = {
"******@163.com", "******@qq.com" };// 收件人邮箱

String[] receiver = {
"test1",  "test2"};// 收件人

Map<String, String>
map = null;// 存储收件人及其邮箱地址

String subject =
"Test_Send_Email";// 邮件标题

String attachmentPath =
"/******/aaa.gif";// 附件路径

String text =
"淡定~老铁们------this is a test!!";// 正文内容

map =
new HashMap<>();

for (int
i = 0; i <
receive.length;
i++) {

map.put(receive[i],
receiver[i]);

}

new Multipart_Test(send,
sender, pwd,
port, server,
map, subject,
attachmentPath, text);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息