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

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);

// 添加正文

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);

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值