电子邮件开发应用

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();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值