`

电子邮件开发应用

    博客分类:
  • J2EE
阅读更多
1.电子邮件发送
/*
 * html 电子邮件发送
*/
package lesson6;

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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 HtmlMessageSender 
{
    String protocol = "smtp";
    String from = "it315_test@sina.com";
    String to = "it315_test@sohu.com ";
    String subject = "HTML测试";
    String body = "<a href=http://www.it315.org>" +
	 				 "欢迎大家访问我们的网站</a></br>" +
    				 "<img src=\"cid:it315_logo_gif\">";
    
    public static void main(String[] args) throws Exception
	{
		String server = "smtp.sina.com.cn";
		String user = "it315_test";
		String pass = "123456";

        HtmlMessageSender sender = new HtmlMessageSender ();
        Session session = sender.createSession();
        MimeMessage message = sender.createMessage(session);
        
        //获得Transport对象,并连接邮件服务器发送邮件
        Transport transport = session.getTransport();
        transport.connect(server, user, pass);
        transport.sendMessage(message,
            message.getRecipients(Message.RecipientType.TO));
        transport.close();
	}

    public Session createSession()
    {
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", protocol);
		/*必须将mail.smtp.auth属性设置为true,SMTPTransport对象才会向
		SMTP服务器提交用户认证信息,这个信息可以从JavaMail的javadocs文档
		中的com.sun.mail.smtp包的帮助页面内查看到。
		*/
        props.setProperty ("mail.smtp.auth","true");
        Session session = Session.getInstance(props);
        session.setDebug(true);
    	return session;
    }

    public MimeMessage createMessage(Session session) throws Exception
    {
        MimeMessage message = new MimeMessage(session);    
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,
        		InternetAddress.parse(to));
        message.setSubject(subject);

        MimeMultipart multipart = new MimeMultipart("related");

        MimeBodyPart htmlBodyPart = new MimeBodyPart();          
        htmlBodyPart.setContent(body,"text/html;charset=utf-8");
        multipart.addBodyPart(htmlBodyPart); 

        MimeBodyPart gifBodyPart = new MimeBodyPart();
        FileDataSource fds = new FileDataSource("d:\\attach\\logo.gif");
        gifBodyPart.setDataHandler(new DataHandler(fds));
        gifBodyPart.setContentID("it315_logo_gif");
        multipart.addBodyPart(gifBodyPart);

        message.setContent(multipart);
        message.saveChanges();
        return message;
    }
}


2.电子邮件接收
电子邮件注册
<html>
  <head>
    <title>login.html</title>
  </head>
  <body>
	<form action="logon.jsp" method="post">
		主机名:<input name="host" type="text"><br/>
		用户名:<input name="username" type="text"><br/>
		密码:<input name="password" type="password"><br/>
		<input type="submit" value="提交"> 
		<input type="reset" value="重置">
	</form>
  </body>
</html>

列出全部邮件
<%@ page import="javax.mail.*,org.it315.*"
 contentType="text/html;charset=GB2312" %>
<%
	String host = request.getParameter("host");  	
  	String username = request.getParameter("username");
  	String password = request.getParameter("password");
  	String from = "";
  	String subject = "";	
  	Folder folder = POP3Help.getFolder(host,username,password);
  	session.setAttribute("folder",folder);
  	Message [] messages = folder.getMessages();
  	for(int i=0;i<messages.length;i++)
  	{
  		try
  		{
  			from = messages[i].getFrom()[0].toString();
			subject = messages[i].getSubject();
			out.print(i);
%>
			发件人地址:<%=from %>  邮件主题:<%=subject %>				
			<a href="displayMsg.jsp?msgnum=<%=i+1%>">查看邮件</a><br/>
<%
		}
		catch(Exception e){}
  	}
%>

POP3
package org.it315;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Session;
import javax.mail.Store;

public class POP3Help
{		
	public static Folder getFolder(String host,String username,String password)
	{		
	    Properties prop = new Properties();
	    prop.setProperty("mail.store.protocol","pop3");
	    prop.setProperty("mail.pop3.host",host);
	    Session mailSession = Session.getDefaultInstance(prop,null);
	    mailSession.setDebug(false);
	    try
	    {
	        Store store = mailSession.getStore("pop3");
	        store.connect(host,username,password);
			Folder folder = store.getFolder("inbox");
	        folder.open(Folder.READ_WRITE);
	        return folder;
	    }
	    catch(Exception e)
	    {
	    	e.printStackTrace();
	    }
		return null;	
	}	
}

package org.it315;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.internet.MimeUtility;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class DisplayHead extends HttpServlet 
{
	public void doGet(HttpServletRequest request, HttpServletResponse response)
					  throws ServletException, IOException 
	{
		response.setContentType("text/html;charset=gb2312");
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		int msgnum = Integer.parseInt(request.getParameter("msgnum"));
		Folder folder = (Folder)session.getAttribute("folder");

		try
		{
			Message msg = folder.getMessage(msgnum);
			String from = msg.getFrom()[0].toString();
			String subject = msg.getSubject();
			String sendDate = 
				   DateFormat.getInstance().format(msg.getSentDate());
			out.println("邮件主题:" + subject + "<br/>");
			out.println(" 发件人:"+ from +"<br/>");
			out.println("发送日期:"+ sendDate +"<br/><br/>");
			System.out.println(msg.getContentType());			
			if(msg.isMimeType("multipart/*"))
			{
				Multipart mp = (Multipart)msg.getContent();
				for(int i=0;i<mp.getCount();i++)
				{
					BodyPart bp = mp.getBodyPart(i);
					if(bp.getDisposition()!=null)
					{
						String filename = bp.getFileName();
						System.out.println(filename);
						if(filename.startsWith("=?"))
						{
							filename = MimeUtility.decodeText(filename);
						}
						out.print("附件:");
						out.print("<a href=HandleAttach?msgnum=" + msgnum +
								  "&&bodynum=" + i + "&&filename=" + filename + ">" 
								  + filename + "</a><br/>");
					}
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

package org.it315;
import java.io.IOException;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class DisplayContent extends HttpServlet 
{
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
		ServletOutputStream sos = response.getOutputStream();
		HttpSession session = request.getSession();
		int msgnum = Integer.parseInt(request.getParameter("msgnum"));
		Folder folder = (Folder)session.getAttribute("folder");
		
		try
		{
			Message msg = folder.getMessage(msgnum);
			//邮件类型不是mixed时,表示邮件中不包含附件,直接输出邮件内容
			if(!msg.isMimeType("multipart/mixed"))
			{
				response.setContentType("message/rfc822");
				msg.writeTo(sos);
			}
			else
			{
				//查找并输出邮件中的邮件正文
				Multipart mp = (Multipart)msg.getContent();
				int bodynum = mp.getCount();
				for(int i=0;i<bodynum;i++)
				{
					BodyPart bp = mp.getBodyPart(i);				
					/*
					 * MIME消息头中不包含disposition字段,
					 * 并且MIME消息类型不为mixed时,
					 * 表示当前获得的MIME消息为邮件正文
					 */
					if(!bp.isMimeType("multipart/mixed")
									  &&bp.getDisposition()==null)
					{
						response.setContentType("message/rfc822");
						bp.writeTo(sos);
					}
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

    电子邮件系统开发 电子邮件系统开发

    电子邮件系统开发是一个复杂而关键的过程,它涉及到网络通信、数据安全、用户界面设计等多个方面的技术。在本讨论中,我们将深入探讨电子邮件系统的核心组件、工作原理以及开发过程中的关键技术。 一、电子邮件系统...

    电子邮件开发

    电子邮件开发是一个涵盖多个技术领域的主题,它涉及到网络通信、数据编码、邮件协议以及软件编程等多个方面。在这个领域,我们通常会使用PHP这样的编程语言来构建和处理电子邮件功能。以下是一些关于电子邮件开发的...

    电子邮件系统UML设计

    UML(统一建模语言)是软件开发中的一个重要工具,用于系统分析和设计,特别是复杂系统如电子邮件系统的建模。本篇文章将深入探讨电子邮件系统UML设计的关键知识点。 首先,我们来看**用例图(Use Case Diagram)**...

    java开发的电子邮件Web客户端

    Java开发的电子邮件Web客户端是一种基于Java技术构建的网络应用程序,允许用户通过Web浏览器访问和管理他们的电子邮件。这种客户端通常利用SMTP(Simple Mail Transfer Protocol)和IMAP(Internet Message Access ...

    电子邮件客户端软件论文

    电子邮件客户端软件论文是一篇深入探讨电子邮件客户端应用技术的学术研究,涵盖了从基本概念到实际开发与应用的多个方面。这篇论文旨在分析电子邮件客户端的工作原理、功能特性,以及在信息技术环境中如何优化其性能...

    电子邮件收发

    通过学习和实践“第六章 电子邮件发送和接受程序的开发”中的内容,你可以了解到如何在VC++环境中,利用MFC库一步步实现一个完整的邮件客户端应用,包括设置邮件参数、连接SMTP/POP3服务器、处理用户界面交互以及...

    电子邮件发送和接受程序的开发

    电子邮件发送和接受程序的开发是计算机科学领域中的一个重要实践,特别是在软件工程和网络通信课程中。这个主题通常涉及使用编程语言如C++,并利用MFC(Microsoft Foundation Classes)库来构建应用程序。MFC是微软...

    张孝祥Java邮件开发详解110M

    在IT行业中,Java邮件开发是一项基础且重要的技能,尤其对于构建企业级应用和服务来说更是不可或缺。张孝祥的"Java邮件开发详解"教程无疑是学习这一主题的宝贵资源。本教程可能包含了从邮件协议理解到实际JavaMail ...

    电子邮件模块 jsp

    在JSP(JavaServer Pages)环境下开发电子邮件模块,可以利用Java的Mail API和其他相关库来实现这一功能。本模块主要涉及到以下几个核心知识点: 1. JSP基础:JSP是一种动态网页技术,它将HTML代码和Java代码结合在...

    JAVA电子邮件系统

    Java电子邮件系统是一个基于Java技术构建的Web应用程序,主要用于学习和理解电子邮件系统的实现原理。这个系统可以让初学者了解如何在互联网上发送和接收电子邮件,以及如何处理邮件附件等基本功能。以下是一些关于...

    PHP网络开发--电子邮件开发(源码).rar

    这个压缩包“PHP网络开发--电子邮件开发(源码).rar”包含了实现这一功能的相关源代码,可能是为了教学或者实际项目应用。 PHP是一个开源的服务器端脚本语言,特别适合于Web开发,可以嵌入到HTML中使用。在电子...

    一个电子邮件程序源码

    电子邮件程序是一种用于发送、接收和管理电子信件的应用软件,其源码是理解电子邮件系统工作原理和技术实现的关键。...这不仅有助于理解电子邮件工作原理,也有助于进一步开发和优化电子邮件应用。

    C# winfrom电子邮件源码

    本篇文章将深入探讨如何在C# WinForms环境中实现电子邮件功能,并基于给定的源码进行学习和二次开发。 首先,让我们理解电子邮件的基础知识。电子邮件系统通常基于SMTP(Simple Mail Transfer Protocol)用于发送...

    发送和接收程序 电子邮件

    电子邮件发送和接收程序是IT领域中一个常见的应用,主要用于实现电子通信。在本文中,我们将深入探讨这个程序的运行环境、所需组件以及SMTP协议的基本原理。 首先,要运行这样一个程序,你需要在计算机上安装...

    电子邮件安全技术研究

    另一方面,S/MIME(Secure Multipurpose Internet Mail Extensions)由Netscape开发,基于流行的电子邮件安全软件PGP,获得了IBM、Lotus等公司的支持,同样有望成为IETF标准。这两种标准均致力于提供一套统一的加密...

Global site tag (gtag.js) - Google Analytics