JavaMail的发送邮件

JavaMail发送邮件。

发送邮件:  

Properties-->Session-->MimeMessage-->设置subject,to,from-->Multipart,BodyPart-->Transport

1: 设置邮件服务器

String hostName = smtp.163.com; //举例163的邮箱
Properties props = System.getProperties(); //确定当前的系统属性,是个hashmap类型
props.put("mail.smtp.host",hostName);


2: 创建MIME类型的消息

  Session类定义了基本的邮件会话。我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都会使用到的共享信息。

Session session = Session.getInstance(props,null); //session的最后一个参数是null是因为我们没有用到邮件授权
MimeMessage mimeMsg = new MimeMessage(session); //有了session我们就可以用session来创建Message了,但Message是抽象类,所以我们用javax.mail.internet.MimeMessage这个子类。
Multipart mp = new Multipart();


3: 设置主题、from和to

mimeMsg.setSubject("信的标题");//我们用Address来设置邮件地址类,也因为Address是抽象类,所以我们用javax.mail.internet.InternetAddress这个子类
mimeMsg.setFrom(new InternetAddress(from)); //String from = "[email protected]"
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));


4: 添加附件

BodyPart bp = new MimeBodyPart(); //附件都放在BodyPart中
FileDataSource fileds = new FileDataSource(fileName);//String fileName="e:/vs.log";
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);


5: 设置信的内容

BodyPart bp1 = new MimeBodyPart(); //信的内容也是body的一部分,所以可以放在BodyPart内
bp1.setContent("信的内容");
mp.addBodyPart(bp1);

//还有另一种方法,直接用mimeMsg创建
mimeMsg.setContent("信的内容", "text/plain");
//如果信的内容是文本的话,可以直接用setText()
mimeMsg.setText("信的内容");


6: 发送邮件

mimeMsg.setContent(mp); //设置信的内容
mimeMsg.saveChanges(); //保存
Session mailSession = session.getInstance(props, null);
Transport tp = mailSession.getTransport("smtp"); //协议
tp.connect((String) props.getProperty("mail.stmp.host"), username,password); //连接到服务器,写如username,password
tp.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));//设置收件人列表,发送小心
tp.close();

你可能感兴趣的:(JavaMail的发送邮件)