/** * 最简单的邮件 * @author ztx */ public class Demo1 { /** * @param args */ public static void main(String[] args) throws Exception{ Properties props = new Properties(); props.put("mail.smtp.auth","true"); props.put("mail.transport.protocol","smtp"); Session session = Session.getInstance(props); Message msg = new MimeMessage(session); msg.setText("你好吗?"); msg.setFrom(new InternetAddress("lili@sohu.com")); Transport transport = session.getTransport(); //transport.send(msg,new Address[]{new InternetAddress("itcast_test@sohu.com")}); transport.connect("smtp.sina.com",25,"itcast_test","123456"); transport.sendMessage(msg,new Address[]{new InternetAddress("itcast_test@sohu.com")}); transport.close(); } } /** * 有认证的邮件 * @author ztx * */ public class Demo2 { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth","true");//设置以认证的方式与服务器对话 props.put("mail.transport.protocol","smtp");//指定邮件协议 props.put("mail.host","smtp.sina.com");//服务器地址 Session session = Session.getInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication("itcast_test","123456");//设置用户名密码 } } ); session.setDebug(true); //方式一:代码撰写邮件(用代码拼写邮件) /* Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress("itcast_xxx@sina.com"));//发件人 msg.setRecipients(RecipientType.TO,InternetAddress.parse("itcast_test@sina.com,itcast_test@sohu.com"));//收件人 msg.setSubject("中文主题"); msg.setContent("<span style="color:red;" mce_style="color:red;">中文呵呵</span>","text/html;charset=gbk");//内容 Transport.send(msg); */ //方式二:选择客户端撰写完的邮件 (无需用代码拼写出复杂的邮件) Message msg = new MimeMessage(session,new FileInputStream("E//demo3.eml")); Transport.send(msg,InternetAddress.parse("itcast_test@sohu.com")); //用Transport静态方法发送邮件,内部同时完成了类似Demo1里的以下三部: /* transport.connect("smtp.sina.com",25,"itcast_test","123456");//连接 transport.sendMessage(msg,new Address[]{new InternetAddress("itcast_test@sohu.com")});//发送 transport.close();//释放资源 */ } } /** * 复杂邮件 * @author ztx * */ public class Demo3 { public static void main(String[] args) throws Exception { Session session = Session.getInstance(new Properties()); //创建邮件 Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress("'"+MimeUtility.encodeText("传智博客")+"'<itcast_test@sina.com>"));//发件人地址 msg.setReplyTo(new Address[]{new InternetAddress("lili@126.com")});//回复地址 msg.setRecipients(RecipientType.TO, InternetAddress.parse("'"+MimeUtility.encodeText("黎活明")+"'<lhm@126.com>"));//收件人 //给邮件加主题 msg.setSubject("你们的java培训真的是最牛的吗"); //混合体 MimeMultipart msgMultipart = new MimeMultipart("mixed"); //给邮件加内容,内容是个混合体(主内容和附件混合) msg.setContent(msgMultipart); //混合体里的附件 MimeBodyPart attch = new MimeBodyPart(); //混合体里的主内容 MimeBodyPart content = new MimeBodyPart(); //混合体里放附件 msgMultipart.addBodyPart(attch); //混合体里放主内容 msgMultipart.addBodyPart(content); DataSource ds = new FileDataSource("D://...//附件.txt");//文件 DataHandler dh = new DataHandler(ds);//包装一个文件 attch.setDataHandler(dh);//附件里放入包装对象 attch.setFileName(MimeUtility.encodeText("java培训.txt"));//设置附件名 //关联体 MimeMultipart bodyMultipart = new MimeMultipart("related"); //主内容是个关联体(html和图片关联) content.setContent(bodyMultipart); //html MimeBodyPart htmlPart = new MimeBodyPart(); //图片 MimeBodyPart gifPart = new MimeBodyPart(); //关联体里放html bodyMultipart.addBodyPart(htmlPart); //关联体里放图片 bodyMultipart.addBodyPart(gifPart); //填充图片 DataSource gifds = new FileDataSource("E://...//logo.gif"); DataHandler gifdh = new DataHandler(gifds); gifPart.setDataHandler(gifdh); gifPart.setHeader("Content-Location","http://www.itcast.cn/logo.gif"); htmlPart.setContent("你们的Java培训真的是最牛的吗?想跟你们比一下!<img src="http://www.itcast.cn/logo.gif" mce_src="http://www.itcast.cn/logo.gif"/>","text/html;charset=gbk"); msg.saveChanges(); OutputStream ops = new FileOutputStream(""); msg.writeTo(ops); ops.close(); } } Web系统发送邮件的方式:让服务器创建Session,应用程序用JNDI获得Session,执行发送。 <Context> <Resource name="mail/Dog" auth="Container" type="javax.mail.Session" mail.smtp.host="smtp.sina.com" mail.smtp.auth="true" mail.transport.protocol="smtp" /> </Context> public class SendMailServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //Demo2.main(new String[]{}); Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); Session session = (Session) envCtx.lookup("mail/Dog"); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("itcast_test@sina.com")); InternetAddress to[] = new InternetAddress[1]; to[0] = new InternetAddress("itcast_test@sina.com"); message.setRecipients(Message.RecipientType.TO, to); message.setSubject("ha"); message.setText("test"); //Transport.send(message); Transport transport = session.getTransport(); transport.connect("smtp.sina.com", "itcast_test", "123456"); transport.sendMessage(message, to); transport.close(); response.getWriter().print("ok!"); } catch (Exception e) { e.printStackTrace(response.getWriter()); } } }