`

电子邮件开发应用

    博客分类:
  • 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();
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics