`
zhongdw
  • 浏览: 8080 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

用JavaMail发送和接收邮件

阅读更多
用JavaMail发送邮件
package com.mailsystem.example;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendAttachment
...{
   public static void main(String[] args)
   ...{
       try
       ...{
           // 创建 properties ,里面包含了发送邮件服务器的地址。
           Properties mailProps = new Properties();
           mailProps.put("mail.smtp.host", "127.0.0.1");  
           
           // 创建 session
           Session mailSession = Session.getDefaultInstance(mailProps);

           // 创建 邮件的message,message对象包含了邮件众多有的部件,都是封装成了set方法去设置的
           MimeMessage message = new MimeMessage(mailSession);

           //设置发信人
           message.setFrom(new InternetAddress(
               "fred@testmail.com"));
           //收信人
           message.setRecipient(Message.RecipientType.TO,
               new InternetAddress("tang@testmail.com"));

           // 邮件标题
           message.setSubject("a poem");   
          

          //创建附件
           MimeMultipart multi = new MimeMultipart();

           // 创建 BodyPart,主要作用是将以后创建的n个内容加入MimeMultipart.也就是可以发n个附件

           BodyPart textBodyPart = new MimeBodyPart();  //第一个BodyPart.主要写一些一般的信件内容。

           textBodyPart.setText("Do you fear the force of the wind The slash of the rain Go face them and fight them "+
                   "Be savage again. Go hungry and cold like the wolf, Go wade like the crane: "+
                   "The palms of your hands will thicken, The skin of your cheek will tan, You'll grow ragged and weary and swarthy, "+
                   "But you'll walk like a man!");

           // 压入第一个BodyPart到MimeMultipart对象中。
           multi.addBodyPart(textBodyPart);

           // 创建第二个BodyPart,是一个FileDataSource
           FileDataSource fds = new FileDataSource("e:\注册码.txt");

           BodyPart fileBodyPart = new MimeBodyPart();    //第二个BodyPart
           fileBodyPart.setDataHandler(new DataHandler(fds));   //字符流形式装入文件
           fileBodyPart.setFileName(fds.getName());          //设置文件名,可以不是原来的文件名。 
           
           multi.addBodyPart(fileBodyPart);

           // MimeMultPart作为Content加入message
           message.setContent(multi);

           // 所有以上的工作必须保存。
           message.saveChanges(); 
           
           Transport.send(message);
           System.out.println("Mail send succesfully!");
           
       } catch (Exception e) ...{
           e.printStackTrace();
       }
   }
} 


用JavaMail接收邮件
package com.mailsystem.example;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Part;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Provider;

public class MailReciever ...{
    public static final String mailServer = "127.0.0.1";
    public static final String mailUserName = "tang";
    public static final String mailPassword = "tang";
    public static final String mailProvider = "imap";
    
    //解析邮件内容
    private static void extractPart(final Part part) throws MessagingException, IOException ...{
        if(part.getContent() instanceof Multipart) ...{
            Multipart mp=(Multipart)part.getContent();
            for(int i=0;i<mp.getCount();i++) ...{
                extractPart(mp.getBodyPart(i));
            }
            return;
        }
        String fileName = part.getFileName();
        
        if(fileName == null) ...{
              System.out.println(part.getContent());
        } else if(fileName != null && !part.getContentType().startsWith("text/plain")) ...{
            //解析附件内容
           
            InputStream in=part.getInputStream();
            //保存附件,这里假设了一个文件,实际应该根据保存文件的类型来决定
            FileOutputStream out = new FileOutputStream("e:\att.txt");

            byte[] buffer=new byte[1024];
            int count=0;
            while((count=in.read(buffer))>=0) 
                out.write(buffer,0,count);
            in.close();
        }
    }
  
    public static void main(String []args) ...{
        Properties props = new Properties();
        
        props.setProperty("mail.pop3s.rsetbeforequit","true");
        props.setProperty("mail.pop3.rsetbeforequit","true");
        Session session=Session.getInstance(props,null);
        try ...{
            System.out.println("Getting store...");
            Store store = session.getStore(mailProvider);
           
            store.connect(mailServer, mailUserName, mailPassword);
           
            Folder folder = store.getFolder("inbox");
        
            folder.open(Folder.READ_WRITE);
            
            System.out.println("You have " + folder.getMessageCount() + " messages in inbox");
            System.out.println("You hava " + folder.getUnreadMessageCount() + " unread messages in inbox");
            Message []msgs = folder.getMessages();
            
            for (int i=0; i < msgs.length; i++) ...{
           
               MailReciever.extractPart(msgs[i]);
               
            }
            folder.close(false); //false:不删除标记为DELETED的邮件
            store.close();
        } catch (Exception ex) ...{
            ex.printStackTrace();
        }
        
    }
    
}
分享到:
评论

相关推荐

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    javaMail发送和接收邮件

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中发送和接收电子邮件。它提供了丰富的 API,使得开发者可以方便地与各种邮件服务器进行交互,支持 SMTP、POP3 和 IMAP 协议。本篇文章将深入探讨 JavaMail 的...

    用javaMail发送邮件

    以上就是使用JavaMail发送邮件的基本过程。在实际开发中,可能还需要处理更多复杂情况,如SSL/TLS加密、HTML邮件、多部分消息等。JavaMail API提供了丰富的功能来应对这些需求,让开发者能够灵活地构建邮件系统。 ...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    使用JAVAMail代发邮件

    我们可以使用 Transport 对象来发送邮件, Transport 对象是 JavaMail 库中的一个核心对象,用于发送和接收电子邮件。我们可以使用 Transport 对象的 send 方法来发送邮件。 在发送邮件之前,我们需要设置邮件...

    基于javamail接收邮件源代码

    JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一套API,使得开发者能够方便地处理SMTP、POP3和IMAP等邮件协议。在给定的标题和描述中,我们讨论的是如何使用JavaMail API来接收邮件...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    使用javaMail发送邮件

    JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者可以方便地处理SMTP、POP3、IMAP等邮件协议。在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送...

    javamail 回执邮件资料

    接下来,让我们深入探讨如何使用 JavaMail 发送和接收邮件。 1. **发送邮件**: - 配置 JavaMail Session:这通常涉及到设置 SMTP 服务器的属性,如主机名、端口号、用户名和密码。 - 创建 MimeMessage 对象:这...

    javamail实现邮箱与邮箱发送邮件

    JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件。它提供了丰富的API,使得开发者可以轻松地实现发送、接收和处理电子邮件...通过深入研究和实践这些示例,你可以熟练掌握使用JavaMail发送邮件的技巧。

    javamail发送html邮件

    JavaMail API 是一个用于发送、接收电子邮件的标准接口集合,它支持多种协议(如 SMTP、IMAP 和 POP3),使得 Java 应用程序能够轻松地发送和接收电子邮件。 #### 二、发送 HTML 格式的邮件 在实际应用中,经常需要...

    JavaMail发送和接受邮件的一个小例子

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收邮件以及处理复杂的邮件格式,如文本、图片和附件。在这个小例子中,我们将深入探讨如何利用JavaMail API来实现这些功能。 ...

    javaMail实现发送邮件的demo

    JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要...

    如何用javamail定时发送邮件

    JavaMail 是一个强大的开源库,用于在 Java 应用程序中发送和接收电子邮件。要实现定时发送邮件,我们可以结合 JavaMail 和 Java 计时器框架(如文中提到的 Java Timer)。以下是一个详细的步骤来实现这个功能: 1....

    用Java类实现JavaMail发送邮件的例子

    在这个例子中,我们将详细探讨如何使用JavaMail发送邮件,包括SMTP认证、添加附件以及发送HTML内容的邮件。 首先,为了使用JavaMail API,我们需要引入相应的库。在这个例子中,`javamail`和`JAF`(JavaBeans ...

    javamail邮件发送接收测试

    这个“javamail邮件发送接收测试”是开发者在学习过程中创建的一个测试项目,旨在帮助理解和实践 JavaMail 的核心功能。通过这个项目,我们可以深入理解如何使用 JavaMail API 来实现邮件的发送和接收。 JavaMail ...

    javamail发送邮件实例

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送...以上就是使用JavaMail发送邮件的详细过程,以及与文本编辑器KindEditor的集成方式。在开发过程中,记得根据具体需求调整和优化代码,以满足不同的业务场景。

    JavaMail发送和接收

    ### JavaMail发送与接收详解 #### 一、JavaMail概览与体系结构 JavaMail,作为Sun Microsystems(现Oracle)提出的一系列API集合,专为Java应用开发人员提供了收发电子邮件的功能。值得注意的是,尽管JavaMail是...

Global site tag (gtag.js) - Google Analytics