JavaEE5学习笔记04-JavaMail使用总结---3

1.      接收邮件实例

/**

 * 简单的接收邮件例子

 *

 * @author liuyan

 *

 */

public class ReciveMail {

 

    private final static String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

 

    private String account;

 

    private String password;

 

    private String pop3Host;

 

    private int pop3Port;

 

    private Store store;

 

 //省略setter、getter

 

    public Store getStore() throws MessagingException {

 

       if (this.store == null || !this.store.isConnected()) {

           Properties properties = new Properties();

 

           // gmail需要特殊处理SSL验证

           if (isGmail()) {

              properties.setProperty("mail.pop3.socketFactory.class",

                     SSL_FACTORY);

           }

 

           Session session = Session.getDefaultInstance(properties);

 

           // 使用pop3协议接收邮件

           URLName url = new URLName("pop3", getPop3Host(), getPop3Port(),

                  null, getAccount(), getPassword());

 

           // 获得邮件的存储对象

           Store store = session.getStore(url);

 

           // 连接上

           store.connect();

 

           this.store = store;

       }

 

       return store;

    }

 

 

  

    public ReciveMail() {

 

    }

 

    /**

     * 获得消息

     *

     * @throws MessagingException

     * @throws IOException

     */

    public void getMessages() throws MessagingException, IOException {

 

       // 获取INBOX文件夹,收件箱内

       Folder inbox = getStore().getFolder("INBOX");

 

       // 打开可读写的文件夹

       inbox.open(Folder.READ_WRITE);

 

       // 获得邮件实体对象数组

       Message[] messages = inbox.getMessages();

 

       // 遍历邮件

       for (int i = 0; i < messages.length; i++) {

 

           int j = i + 1;

 

           System.out.println("第【" + j + "】封邮件");

 

           // 邮件文本内容

           System.out

                  .println(getMailContent(messages[i], new StringBuffer(""))

                         .toString());

 

           // 获取邮件的附件

           getFiles(messages[i]);

 

           System.out

                  .println("===============================================");

       }

 

    }

 

    /**

     * 邮件的内容

     *

     * @param part

     * @param result

     * @return

     * @throws IOException

     * @throws MessagingException

     * @throws MessagingException

     * @throws IOException

     */

    private StringBuffer getMailContent(Part part, StringBuffer result)

           throws MessagingException, IOException {

       if (part.isMimeType("multipart/*")) {// 邮件是复杂类型的

           Multipart mp = (Multipart) part.getContent();

 

           // 邮件的整体部分body数量

           int sum = mp.getCount();

 

           // 第一部分是text/plain

           // 第二部分是text/html

           if (sum > 1)

              sum = 1;

 

           for (int i = 0; i < sum; i++) {

              BodyPart bp = mp.getBodyPart(i);

 

              // 递归

              getMailContent(bp, result);

           }

 

       } else if (part.isMimeType("text/*")) {// 邮件是纯文本类型的

           try {

              String str = (String) part.getContent();

 

              result.append(str);

 

           } catch (IOException e) {

 

              // gb2312需要异常处理

              InputStream is = part.getInputStream();

 

              byte[] b = new byte[1024];

             

              //因为gb2312的内容需要在异常中特殊处理一下,所以直接从字节数组中获得String内容

              is.read(b);

 

              String newStr = new String(b);

 

              result.append(newStr);

 

              // e.printStackTrace();

           } catch (MessagingException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

       }

       return result;

 

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JWS SOAP Web Service中,可以使用Handler实现过滤器/拦截器的效果,对接口请求和响应进行处理。 Handler是Java EE中的一个标准接口,用于处理Web Service请求和响应。在JWS SOAP Web Service中,Handler可以对请求和响应进行处理,类似于Servlet中的过滤器和拦截器。 Handler可以在请求到达Web Service之前或者响应离开Web Service之后进行处理,可以对SOAP消息的头和体进行处理,可以修改SOAP消息中的内容,可以设置SOAP消息的属性等。 在JWS SOAP Web Service中,使用Handler需要完成以下步骤: 1. 创建Handler类,实现javax.xml.ws.handler.Handler接口,并实现其方法。 2. 在Web Service实现类中,使用@HandlerChain注解指定Handler链的位置和名称。 3. 在Handler链的配置文件中,指定Handler类的位置和名称,并指定Handler类的处理顺序。 示例代码如下: Handler类: ```java public class MyHandler implements SOAPHandler<SOAPMessageContext> { public boolean handleMessage(SOAPMessageContext context) { Boolean outbound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (outbound) { System.out.println("Handle outbound message."); } else { System.out.println("Handle inbound message."); } return true; } public boolean handleFault(SOAPMessageContext context) { System.out.println("Handle message fault."); return true; } public void close(MessageContext context) { System.out.println("Close handler."); } public Set<QName> getHeaders() { return null; } } ``` Web Service实现类: ```java @WebService @HandlerChain(file = "handler-chain.xml") public class MyWebService { @WebMethod public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` Handler链配置文件handler-chain.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <handler-chains xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/handler-chains_1_0.xsd"> <handler-chain> <handler> <handler-class>com.example.MyHandler</handler-class> </handler> </handler-chain> </handler-chains> ``` 在上面的示例中,我们创建了一个MyHandler类,实现了javax.xml.ws.handler.Handler接口,并实现了handleMessage、handleFault、close和getHeaders方法。在MyWebService类中,使用@HandlerChain注解指定了Handler链的位置和名称。在handler-chain.xml中,指定了MyHandler类的位置和名称,并指定了处理顺序。 当Web Service被调用时,MyHandler类会对请求和响应进行处理,并输出相关信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值