最近在书上看到了一段利用java实现的邮件发送功能的案例,想想在许多网站中,注册用户时都会用到的一种短信验证的功能,觉得挺有意思,也挺有必要的,所以就想和大家分享一下,也就作为第一次博文的内容。
首先了解一下整个功能的实现步骤
创建Properties对象,用以保存邮件服务器等信息创建Session对象创建MimeMessage对象并封装邮件信息利用Transport 对象的sendMessage方法发送邮件接下来是具体步骤,此处我用的是163邮箱向qq邮箱发送邮件 1. 创建Properties对象,封装服务器信息
Properties props = new Properties(); props.put("mail.smtp.host", "smtp.163.com"); 通过Session的getInstance(Properties props)方法获取Session对象 Session session = Session.getInstance(props); 创建MimeMessage对象并封装邮件信息 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("1234567@163.com"));//设置发送人 message.setText("Hello world");//设置邮件内容 message.setSubject("testing...");//设置主题 message.setRecipient(Message.RecipientType.TO, new InternetAddress("666666@qq.com"));//设置收件人 message.saveChanges();4.利用Transport 对象的sendMessage方法发送邮件
Transport trans = session.getTransport("smtp"); //获取Transport对象,用于传输邮件 trans.connect("smtp.163.com","1234567@163.com","aaaaaa");//通过connect方法,设置服务器,个人邮箱地址和登陆密码,获取实例 trans.sendMessage(message, message.getAllRecipients());//发送邮件 trans.close();//关闭传输通道下面是完整代码。
package com.xia.main; import java.sql.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MeMail { public static void main(String [] args){ try{ Properties props = new Properties(); props.put("mail.smtp.host", "smtp.163.com");//添加服务器 Session session = Session.getInstance(props);//获取Session实例 session.setDebug(true);//显示调试信息 MimeMessage message = new MimeMessage(session);//MimeMessage是Message的子类,Message是一个抽象类 message.setFrom(new InternetAddress("123456@163.com"));//设置发送人 message.setText("Hello world");//设置内容 //message.setContent("testing", "text/plain");设置内容,可以设置文本格式 message.setSubject("testing...");//设置主题 message.setRecipient(Message.RecipientType.TO, new InternetAddress("111111@qq.com"));//设置收件人 message.setSentDate(new Date(0));//设置发送日期 message.saveChanges();//保证报头域同会话内容保持一致 //从指定协议中获取一个会话实例 Transport trans = session.getTransport("smtp");//获取用于传输信息的实例 trans.connect("smtp.163.com","123456@163.com","111111");//连接服务器 trans.sendMessage(message, message.getAllRecipients());//获取收件人,并发送邮件 trans.close();//关闭传输通道 System.out.println("发送成功!"); }catch(Exception e){ System.out.println("发送失败"); } } }