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);
}
}
相关文章推荐
- 用javamail发送邮件(带附件)的简单实例
- javamail发送邮件的简单实例
- JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件)
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例
- javamail 发送邮件的简单实例 学习
- javamail发送邮件的简单实例_来自BLOGJAVA
- javamail发送邮件的简单实例
- 使用javamail实现发送简单邮件和带有附件的邮件
- Spring代码实例系列-10:通过Spring Mail发送简单邮件、附件和HTML邮件
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例(分享技术,尊重劳动)
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例
- Javamail发送邮件的简单实例
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例(转)
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例
- javamail发送邮件的简单实例