📄 jsp与java mail api----源码下载网.htm
字号:
Java 1.1,它没有 Java.net 类别。<BR>要使用 Authenticator,先创建一个抽象类的子类,并从
getPasswordAuthentication() 方法中返回 PasswordAuthentication
实例。创建完成后,您必需向 session 注册 Authenticator。然后,在需要认证的时候,就会通知
Authenticator。您可以弹出窗口,也可以从配置文件中(虽然没有加密是不安全的)读取用户名和密码,将它们作为
PasswordAuthentication
对象返回给调用程序。<BR> ·Javax.mail.Transport:消息发送的最后一部分是使用 Transport
类。这个类用协议指定的语言发送消息(通常是 SMTP)。它是抽象类,它的工作方式与 Session 有些类似。仅调用静态 send()
方法,就能使用类的 缺省
版本:Transport.send(message);或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码(如果不必要就不传),发送消息,然后关闭连接。
<BR> ·Javax.mail.Store:Store类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。<BR> ·Javax.mail.Folder:Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email的能力。
<BR><BR> 怎样使用JavaScript/" target="_blank">JS</A>P发送email?
<BR><BR> 下面我们通过一个简单的例子,来说明在JavaScript/"
target="_blank">JS</A>P中邮件是如何发送的。该例由两个文件组成。一个是HTML文件,用来建立邮件信息(包括发送人、接收人、主题等)的表单,并将表单内容发送给JavaScript/"
target="_blank">JS</A>P文件;另外一个是JavaScript/"
target="_blank">JS</A>P页面,负责邮件的发送。 <BR><BR>
<TABLE style="WIDTH: 519px; HEIGHT: 684px" cellSpacing=0
cellPadding=0 width=519 bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>HTML文件<BR><HTML><BR><BODY><BR><FORM action="sendmail.jsp"
method="post"><BR><TABLE align="center"><BR><TR><BR><TD
width="50%"><BR>To:<BR><INPUT name="to"
size="25"><BR></TD><BR><TD width="50%"><BR>From:<BR><INPUT
name="from" size="25"><BR></TD><BR></TR><BR><TR><BR><TD
colspan="2"><BR>Subject:<BR><INPUT name="subject"
size="50"><BR></TD><BR></TR><BR><TR><BR><TD
colspan="2"><BR><P>Message:<BR><BR><TEXTAREA name="text"
rows=25 cols=85></TEXTAREA>
<BR></P><BR></TD><BR></TR><BR></TABLE><BR><INPUT type="submit"
name="cb_submit" value=" Send "><BR><INPUT type="reset"
name="cb_reset" value=" Clear
"><BR></FORM><BR></BODY><BR></HTML>
</TD></TR></TBODY></TABLE><BR> JavaScript/"
target="_blank">JS</A>P页面的作用就是获得表单提交过来的数据,并将这些数据赋给Java Mail
API中相应的对象,最后完成邮件发送。 <BR><BR>
<TABLE style="WIDTH: 488px; HEIGHT: 795px" cellSpacing=0
cellPadding=0 width=488 bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>sendmail.jsp文件<BR><%@ page import=" Javax.mail.*,
Javax.mail.internet.*,
Javax.activation.*,Java.util.*"%><BR><html><BR><head><BR><TITLE>JavaScript/"
target="_blank">JS</A>P meets JavaMail, what a sweet
combo.</TITLE><BR></head><BR><body><BR><%<BR>try{<BR>Properties
props = new Properties();<BR>Session sendMailSession;<BR>Store
store;<BR>Transport transport; <BR><BR>sendMailSession =
Session.getInstance(props,
null);<BR>props.put("mail.smtp.host",
"smtp.jspinsider.com");<BR>Message newMessage = new
MimeMessage(sendMailSession);<BR>newMessage.setFrom(new
InternetAddress(request.getParameter("from")));<BR>newMessage.setRecipient(Message.RecipientType.TO,
new InternetAddress ( request.getParameter
("to")));<BR>newMessage.setSubject(request.getParameter("subject"));<BR>newMessage.setSentDate(new
Date());<BR>newMessage.setText(request.getParameter("text"));<BR>transport
=
sendMailSession.getTransport("smtp");<BR>transport.send(newMessage);<BR>%><BR><P>Your
mail has been sent.</P><BR><%<BR>}catch(MessagingException
m)<BR>{<BR>out.println(m.toString());<BR>}<BR>%><BR></body><BR></html>
</TD></TR></TBODY></TABLE><BR> 如何发送HTML类型的邮件
<BR><BR> 在上面的例子中,我们实现了如何发送文本格式的邮件,那么HTML格式的邮件该如何发送呢?那就看看下面的例子吧。<BR> 该例由四个文件组成:<BR> ·form.htm:用来建立邮件信息的表单<BR> ·send.jsp:用来获取表单提交的信息,并调用mymail.mail.HTML.send()方法发送邮件<BR> ·StringDataSource.Java:用户自定义的JavaBean,用来将邮件的Body部分转化为HTML格式<BR> ·HTML.Java:用户自定义的JavaBean,用来发送HTML格式的邮件。在send.jsp文件中提到的mymail.mail.HTML.send()方法就在该JavaBean中定义。
<BR><BR>
<TABLE style="WIDTH: 494px; HEIGHT: 3546px" cellSpacing=0
cellPadding=0 width=494 bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>form.htm<BR><html><BR><head><BR><meta
http-equiv="Content-Type" content="text/html;
charset=gb2312"><BR><title> JavaMail -
发送HTML邮件</title><BR></head><BR><body><BR><table border="0"
cellspacing="0" cellpadding="0"><BR><form method="post"
action="send.jsp"><BR><tr><BR><td>SMTP主机:</td><BR><td><input
type="text" name="smtp"
size="80"></td><BR></tr><BR><tr><BR><td>发信人:</td><BR><td><input
type="text" name="from"
size="80"></td><BR></tr><BR><tr><BR><td>收信人:</td><BR><td><input
type="text" name="to"
size="80"></td><BR></tr><BR><tr><BR><td>抄送人:</td><BR><td><input
type="text" name="cc"
size="80"></td><BR></tr><BR><tr><BR><td>暗送人:</td><BR><td><input
type="text" name="bcc"
size="80"></td><BR></tr><BR><tr><BR><td>主题:</td><BR><td><input
type="text" name="subject"
size="80"></td><BR></tr><BR><tr><BR><td
valign="top">内容:</td><BR><td><textarea name="body" rows="5"
cols="80"></textarea></td><BR></tr><BR><tr><BR><td colspan="2"
align="center"><input type="submit"
value="发送"></td><BR></tr><BR></form><BR></table><BR></body><BR></html>
<BR><BR>send.jsp<BR><%<BR>//变量声明<BR>Java.lang.String
smtp,from,to,cc,bcc,subject,body; <BR><BR>//获得用户输入数据<BR>smtp =
request.getParameter("smtp");<BR>from =
request.getParameter("from");<BR>to =
request.getParameter("to");<BR>cc =
request.getParameter("cc");<BR>bcc =
request.getParameter("bcc");<BR>subject =
request.getParameter("subject");<BR>if(subject!=null){<BR>subject
= new
Java.lang.String(subject.getBytes("iso-8859-1"));<BR>}<BR>body
=
request.getParameter("body");<BR>//发送邮件<BR>mymail.mail.HTML.send(smtp,from,to,cc,bcc,subject,body);<BR>%>
<BR><BR>mymail.jaf.StringDataSource.Java<BR>package
mymail.jaf;<BR>public class StringDataSource implements
Javax.activation.DataSource<BR>{<BR>private Java.lang.String
data;<BR> private Java.lang.String type; <BR><BR> public
StringDataSource(Java.lang.String data,Java.lang.String
type){<BR> this.data = data;<BR> this.type =
type;<BR> } <BR><BR> public Java.io.InputStream
getInputStream() throws Java.io.IOException{<BR> return
new Java.io.StringBufferInputStream(data);<BR>}
<BR><BR> public Java.io.OutputStream getOutputStream() throws
Java.io.IOException{<BR> throw new
Java.io.IOException("it does not support this method
now!");<BR> } <BR><BR> public Java.lang.String
getContentType(){<BR> return type;<BR>}
<BR><BR> public Java.lang.String getName(){<BR> return "
mymail ";<BR>}<BR>} <BR><BR>mymail.mail.HTML.Java<BR>package
mymail.mail;<BR><BR>public final class HTML<BR>{<BR>public
static void send(<BR> Java.lang.String smtp,
/*SMTP主机地址*/<BR> Java.lang.String from,
/*发信人*/<BR> Java.lang.String to,
/*收信人*/<BR> Java.lang.String cc,
/*抄送人*/<BR> Java.lang.String
bcc, /*暗送人*/<BR> Java.lang.String subject,
/*主题*/<BR> Java.lang.String body /*内容*/<BR> ) throws
Java.lang.Exception<BR>{<BR> //变量声明<BR> Java.util.Properties
props; //系统属性<BR> Javax.mail.Session
mailSession; //邮件会话对象<BR> Javax.mail.internet.MimeMessage
mimeMsg; //MIME邮件对象 <BR><BR> //设置系统属性<BR> props =
Java.lang.System.getProperties();
//获得系统属性对象<BR> props.put("mail.smtp.host",smtp); //设置SMTP主机
<BR><BR> //获得邮件会话对象<BR> mailSession =
Javax.mail.Session.getDefaultInstance(props,null);
<BR><BR> //创建MIME邮件对象<BR> mimeMsg = new
Javax.mail.internet.MimeMessage(mailSession);
<BR><BR> //设置发信人<BR> mimeMsg.setFrom(new
Javax.mail.internet.InternetAddress(from));
<BR><BR> //设置收信人<BR> if(to!=null)<BR>{
<BR>mimeMsg.setRecipients(Javax.mail.Message.RecipientType.TO,Javax.mail.
internet.InternetAddress.parse(to));<BR> }
<BR><BR> //设置抄送人<BR> if(cc!=null)<BR>{<BR>mimeMsg.setRecipients(Javax.mail.Message.RecipientType.CC,Javax.mail.
internet.InternetAddress.parse(cc));<BR> }
<BR><BR>//设置暗送人<BR>if(bcc!=null)<BR>{
<BR>mimeMsg.setRecipients(Javax.mail.Message.RecipientType.BCC,Javax.mail.
internet.InternetAddress.parse(bcc));<BR> }
<BR><BR> //设置邮件主题<BR> //mimeMsg.setSubject(subject);<BR> mimeMsg.setSubject(subject,"gb2312");
<BR><BR> //设置邮件内容,将邮件body部分转化为HTML格式<BR> mimeMsg.setDataHandler(new
Javax.activation.DataHandler(new mymail.jaf. StringDataSource
(body,"text/html")));
<BR><BR> //发送邮件<BR> Javax.mail.Transport.send(mimeMsg);<BR> }<BR>}
</TD></TR></TBODY></TABLE></FONT><BR>[page_break] 如何实现消息和标志的删除?
<BR><BR> 消息的删除涉及到与消息相关的 Flags(标志)。不同 flag
表示不同的状态,有些标志由系统定义,而有些则由用户自己定义。下面列出在内部类 Flags.Flag
中预定义的标志:<BR> ·Flags.Flag.ANSWERED <BR> ·Flags.Flag.DELETED
<BR> ·Flags.Flag.DRAFT <BR> ·Flags.Flag.FLAGGED
<BR> ·Flags.Flag.RECENT <BR> ·Flags.Flag.SEEN
<BR> ·Flags.Flag.USER
<BR> 上述这些标志只是标准定义,并不意味着所有邮件服务器或供应商都支持所有这些标志。例如,除了删除消息标志外,POP
协议不再支持其它任何标志。检查是否存在新邮件,这不是个 POP 任务,而是内建于邮件客户机的任务。为找出哪些标志能被支持,可以用
getPermanentFlags() 向 folder 提出请求。<BR> 要删除消息,您可以设置消息的 DELETED
flag:<BR> message.setFlag(Flags.Flag.DELETED, true);<BR> 首先,请以
READ_WRITE 模式打开
folder:<BR> folder.open(Folder.READ_WRITE);<BR> 然后,当所有消息的处理完成后,关闭
folder,并传递一个 true 值,从而擦除(expunge)有 delete
标志的消息。<BR> folder.close(true);<BR> 一个 Folder 的 expunge()
方法可以用来删除消息。但 Sun 的 POP3 供应商不支持。其它供应商有的或许能够实现这一功能,而有的则不能。IMAP
供应商极有可能实现此功能。因为 POP 只支持单个对邮箱的访问,对 Sun 的供应商来说,您必需关闭 folder
以删除消息。<BR> 要取消标志,只要传递 false 给 setFlag() 方法就行了。想知道是否设置过标志,可以用
isSet() 检查。 <BR><BR> 如何实现认证? <BR><BR> 想必读者已经知道 ,如果需要可以用一个
Authenticator 提示用户输入用户名和密码,而不是将用户名和密码作为字符串传递。在这里您会明确了解怎样更充分的使用Java
Mail API的认证机制。<BR> 不用主机、用户名和密码与 Store 相连接,而是设置 Properties
来拥有主机,然后告诉 Session 自定义的 Authenticator 实例,如下所示: <BR><BR>
<TABLE style="WIDTH: 468px; HEIGHT: 233px" cellSpacing=0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -