⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp与java mail api----源码下载网.htm

📁 JavaMail的应用程序合集 jsp的java 的
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            cellPadding=0 width=468 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>// Setup properties<BR>Properties props = 
                  System.getProperties();<BR>props.put("mail.pop3.host", host); 
                  <BR><BR>// Setup authentication, get session<BR>Authenticator 
                  auth = new PopupAuthenticator();<BR>Session session = 
                  Session.getDefaultInstance(props, auth); <BR><BR>// Get the 
                  store<BR>Store store = 
                  session.getStore("pop3");<BR>store.connect(); 
            </TD></TR></TBODY></TABLE><BR>  然后,创建一个 Authenticator 子类并从 
            getPasswordAuthentication() 方法中返回 PasswordAuthentication 
            对象。下面就是这样一种实现,其中用户名和密码仅占用一个域。(这不是一个 Swing 
            工程教程;只要将两部分输入同一个域,用逗号分隔就行。) <BR><BR>
            <TABLE style="WIDTH: 491px; HEIGHT: 365px" cellSpacing=0 
            cellPadding=0 width=491 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>import Javax.mail.*;<BR>import Javax.swing.*;<BR>import 
                  Java.util.*; <BR><BR>public class PopupAuthenticator extends 
                  Authenticator <BR>{<BR>public PasswordAuthentication 
                  getPasswordAuthentication() <BR>{<BR>String username, 
                  password;<BR>  String result = 
                  JOptionPane.showInputDialog("Enter 
                  'username,password'");<BR>  StringTokenizer st = new 
                  StringTokenizer(result, ",");<BR>  username = 
                  st.nextToken();<BR>  password = st.nextToken();<BR>  return 
                  new PasswordAuthentication(username, 
                  password);<BR>        }<BR>} </TD></TR></TBODY></TABLE><BR>  因为 
            PopupAuthenticator 涉及到 Swing,它会启动 AWT 的事件处理线程。这一点基本上要求您在代码中添加一个对 
            System.exit() 
            的调用来终止程序。<BR><BR>  如何实现消息的转发?<BR><BR>  转发消息,相对于其他功能来说,显得有些棘手。没有单独的方法可以供调用,读者必须通过对组成消息各部分的处理来组织要转发的消息。<BR>  一条邮件消息可以由多个部分组成。在处理 
            MIME 消息时,消息中每部分都是 BodyPart,再特殊些,是 MimeBodyPart。不同的 body 
            part(信体部件或正文部件)结合成一个容器,名为 Multipart,再特殊些,就是 
            MimeMultipart。要转发一条消息,您为自己的消息正文创建一个部件,要转发的消息作为另一部件。并且将两个部件结合成一个 
            multipart(多部件)。然后您将这个 multipart 
            添加到一则已写好恰当地址的消息中,并发送。<BR>  本质上就是如此。要将一条消息内容复制到另一条,只要复制 DataHandler 
            (JavaBeans Activation Framework 中的类)就行了。 <BR><BR>
            <TABLE style="WIDTH: 501px; HEIGHT: 527px" cellSpacing=0 
            cellPadding=0 width=501 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>// Create the message to forward<BR>Message forward = new 
                  MimeMessage(session);<BR>// Fill in 
                  header<BR>forward.setSubject("Fwd: " + 
                  message.getSubject());<BR>forward.setFrom(new 
                  InternetAddress(from));<BR>forward.addRecipient(Message.RecipientType.TO, 
                  new InternetAddress(to));<BR>// Create your new message 
                  part<BR>BodyPart messageBodyPart = new 
                  MimeBodyPart();<BR>messageBodyPart.setText( "Here you go with 
                  the original message:\n\n");<BR>// Create a multi-part to 
                  combine the parts<BR>Multipart multipart = new 
                  MimeMultipart();<BR>multipart.addBodyPart(messageBodyPart); 
                  <BR><BR>// Create and fill part for the forwarded 
                  content<BR>messageBodyPart = new 
                  MimeBodyPart();<BR>messageBodyPart.setDataHandler(message.getDataHandler()); 
                  <BR><BR>// Add part to multi 
                  part<BR>multipart.addBodyPart(messageBodyPart); <BR><BR>// 
                  Associate multi-part with 
                  message<BR>forward.setContent(multipart); <BR><BR>// Send 
                  message<BR>Transport.send(forward); 
            </TD></TR></TBODY></TABLE><BR>  怎样处理附件? 
            <BR><BR>  附件是邮件消息的相关资源,如通常不包含在消息正文里文本文件、电子表格或图像等。常见的邮件程序,如 Eudora 和 
            pine 之类,可以用 JavaMail API 将资源 attach(附加) 
            到您的消息上,就可以在收到消息时得到。<BR><BR>  附件的发送:<BR><BR>  发送附件非常像转发消息。您建立各部分以组成完整消息。完成第一部件,即消息正文后,您添加其它部件,其中每个 
            DataHandler 都代表附件,而不是转发消息情况下的共享处理程序。如果从文件中读附件,附件的数据源是 
            FileDataSource。而如果从 URL 中读时,附件的数据源是 URLDataSource。一旦存在 
            DataSource,只要先把它传递给 DataHandler 构造器,最后再用 setDataHandler() 把它附加到 
            BodyPart。假定您要保留附件的原始文件名,最终要做的是用 BodyPart 的 setFileName() 
            方法设置与附件相关的文件名。如下所示: <BR><BR>
            <TABLE style="WIDTH: 492px; HEIGHT: 612px" cellSpacing=0 
            cellPadding=0 width=492 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD> // Define message<BR> Message message = new 
                  MimeMessage(session);<BR> message.setFrom(new 
                  InternetAddress(from));<BR> message.addRecipient(Message.RecipientType.TO,<BR>  new 
                  InternetAddress(to));<BR> message.setSubject("Hello JavaMail 
                  Attachment"); <BR><BR> // Create the message part<BR> BodyPart 
                  messageBodyPart = new MimeBodyPart(); <BR><BR> // Fill the 
                  message<BR> messageBodyPart.setText("Pardon Ideas"); 
                  <BR><BR> Multipart multipart = new 
                  MimeMultipart();<BR> multipart.addBodyPart(messageBodyPart); 
                  <BR><BR> // Part two is attachment<BR> messageBodyPart = new 
                  MimeBodyPart();<BR> DataSource source = new 
                  FileDataSource(filename);<BR> messageBodyPart.setDataHandler(new 
                  DataHandler(source));<BR> messageBodyPart.setFileName(filename);<BR> multipart.addBodyPart(messageBodyPart); 
                  <BR><BR> // Put parts in 
                  message<BR> message.setContent(multipart); <BR><BR> // Send 
                  the message<BR> Transport.send(message); 
            </TD></TR></TBODY></TABLE><BR>  就消息引入附件时,若程序是个 servlet 
            (小服务程序),除告知消息发送到何处外,还必需上载附件。可以将 multipart/form-data 表单编码类型(form 
            encoding type)用于每个上载文件的处理。 <BR><BR>
            <TABLE style="WIDTH: 492px; HEIGHT: 112px" cellSpacing=0 
            cellPadding=0 width=492 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD><FORM ENCTYPE="multipart/form-data"<BR>  method=post 
                  action="/myservlet"><BR> <INPUT TYPE="file" 
                  NAME="thefile"><BR> <INPUT TYPE="submit" 
                  VALUE="Upload"><BR></FORM> </TD></TR></TBODY></TABLE><BR>  注意:消息大小由 
            SMTP 服务器而不是 JavaMail API 来限制。如果您碰到问题,可以考虑用设置 ms 和 mx 参数的方法增大 Java 
            堆大小。</FONT><BR>[page_break]  附件的获取: <BR><BR>  从消息中获取附件比发送它们棘手些,因为 
            MIME 没有简单的关于附件的概念。当消息包含附件时,消息的内容是个 Multipart 对象。接着,您需要处理每个 
            Part,获取主要内容和附件。标有从 part.getDisposition() 获得的 Part.ATTACHMENT 
            配置(disposition)的部件(Part)无疑就是附件。但是,没有配置(以及一个非文本 MIME 类型)和带 
            Part.INLINE 配置的部件也可能是附件。当配置要么是 Part.ATTACHMENT,要么是 Part.INLINE 
            时,这个消息部件的内容就能被保存。只要用 getFileName() 和 getInputStream() 
            就能分别得到原始文件名和输入流。 <BR><BR>
            <TABLE style="WIDTH: 468px; HEIGHT: 220px" cellSpacing=0 
            cellPadding=0 width=468 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>Multipart mp = (Multipart)message.getContent();<BR>for 
                  (int i=0, n=multipart.getCount(); i<n; i++) {<BR> Part part = 
                  multipart.getBodyPart(i));<BR> String disposition = 
                  part.getDisposition();<BR> if ((disposition != null) 
                  &amp;&amp;<BR>   ((disposition.equals(Part.ATTACHMENT) 
                  ||<BR>     (disposition.equals(Part.INLINE))) 
                  {<BR>  saveFile(part.getFileName(), 
                  part.getInputStream());<BR> }<BR>} 
            </TD></TR></TBODY></TABLE><BR>  saveFile() 方法仅依据文件名创建了一个 
            File,它从输入流中将字节读出,然后写入到文件中。万一文件已经存在,就在文件名后添加一个数字作为新文件名,如果这个文件名仍存在,则继续添,直到找不到这样的文件名为止。 
            <BR><BR>
            <TABLE style="WIDTH: 468px; HEIGHT: 107px" cellSpacing=0 
            cellPadding=0 width=468 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>// from saveFile()<BR>File file = new 
                  File(filename);<BR>for (int i=0; file.exists(); i++) {<BR>file 
                  = new File(filename+i);<BR>} 
            </TD></TR></TBODY></TABLE><BR>  上面的代码涵盖了最简单的情况 - 
            消息中各部件恰当的标记了。要涵盖所有情况,还要在配置为空时进行处理,并且获取部件的 MIME 类型来进行相应处理。 <BR><BR>
            <TABLE style="WIDTH: 479px; HEIGHT: 219px" cellSpacing=0 
            cellPadding=0 width=479 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>if (disposition == null) {<BR> // Check if 
                  plain<BR> MimeBodyPart mbp = (MimeBodyPart)part;<BR> if 
                  (mbp.isMimeType("text/plain")) {<BR>  // Handle plain<BR> } 
                  else {<BR>  // Special non-attachment cases here of image/gif, 
                  text/html, ...<BR> }<BR>...<BR>} 
            </TD></TR></TBODY></TABLE><BR>  如何一次发送多个邮件? 
            <BR><BR>  取得必要的Transport对象并调用SendMessage()发送每一个邮件。注意在调用之间设置或改变接收者。<BR><BR>
            <TABLE style="WIDTH: 471px; HEIGHT: 215px" cellSpacing=0 
            cellPadding=0 width=471 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>    Message message = …;<BR>    Transport t = 
                  session.getTransport("smtp");<BR>    t.connect();<BR>message.setRecipient(Message.RecipientType.TO,recipient1);<BR>t.sendMessage(message,recipient);<BR>message.setRecipient(Message.RecipientType.TO,recipient2);<BR>t.sendMessage(message,recipient);<BR>message.setRecipient(Message.RecipientType.TO,recipient3);<BR>t.sendMessage(message,recipient);<BR>t.close(); 
                </TD></TR></TBODY></TABLE><BR>  如何保存邮件? 
            <BR><BR>  用MimeMessage类的writeTo()方法可以实现。用Message类的对象不能实现。<BR><BR>
            <TABLE style="WIDTH: 519px; HEIGHT: 46px" cellSpacing=0 
            cellPadding=0 width=519 bgColor=#ffffff border=0>
              <TBODY>
              <TR>
                <TD>    FileOutputStream fos = new 
                  FileOutputStream("test.mail");<BR>    Mimemessage.writeTo(fos);</TD></TR></TBODY></TABLE><BR>  怎样发送带有图像的HTML格式邮件? 
            <BR><BR>  一些图像还是放在服务器上较好,让用户的邮件工具处理。读者可以将图像作为附件或HTML体发送。如果所有附件保存在同一个目录下,那么必须用不同的图像文件名以确保邮件工具不会显示其他图片。另外图像URL要用绝对路径,不能用相对路径。 
            <BR><BR>  如何设置∕获取邮件的优先级? 
            <BR><BR>  设置邮件的优先级,只需在消息头中添加"X-Priority"属性:<BR>  MimeMessage 
            msg;<BR>  Msg.addHeader("X-Priority","1");<BR>  同样道理,要获取邮件的优先级只要获取"X-Priority"属性的值就可以了:<BR>String 
            priority = msg.getHeader("X-Priority"); <BR><BR>  附录:Java Mail 
            API的基本概念 <BR><BR>  什么是Java Mail API <BR><BR>  JavaMail API 
            是一个用于阅读、编写和发送电子邮件的可选包(标准扩展)。与 Eudora、pine 及 Microsoft Outlook 
            相似,这个包用来创建邮件用户代理(Mail User Agent,MUA) 类型程序。API 
            的主要用途并不在于传输、发送和转发消息;这一功能范围属于某些

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -