发送邮件:
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 = "aaa@163.com" 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(); |