精华内容
下载资源
问答
  • 在网络社交中经常使用邮件来发送我们的信息。...所以,实现自动发送邮件和接收邮件,也是一个软件系统中不可获取的功能,接下来我们就来学习如何使用Java开发邮件系统。我们要学习的内容很简单,只有两个: ...

    在网络社交中经常使用邮件来发送我们的信息。如我们需要邮件“自动”发出:例如找回密码的时候,密码会发送到你的安全邮箱中,例如游戏付费激活的时候,会以邮箱的形式给你发送激活码进行激活;再如,当你的信用卡消费的时候,你绑定的服务邮箱就会收到账单提醒邮件。所以,实现自动发送邮件和接收邮件,也是一个软件系统中不可获取的功能,接下来我们就来学习如何使用Java开发邮件系统。我们要学习的内容很简单,只有两个:


    一、电子邮件的一些基本常识

    1.邮件服务器
    在网上,要提供电子邮件功能,就必须有专门的电子邮件服务器。常见的提供邮件服务器的网站有163/126/新浪等,这些都是面向公众的免费的电子邮件服务器,还有许多公司提供了面向公司内部的邮件服务器。

    我们的邮件的收发都是依靠邮件服务器来的。电子邮件的发送与接收与现实中的寄信一样,寄信人把新给当地的邮局A,当地的邮局通过运输,将信件寄到收信人所在的地方,由收信人所在地的邮局B接收,然后由邮递员送给收件人,这其实和我们发送电子邮件一样,先是发件人通过163的邮件服务器发送邮件,如果收件人126邮件服务器的,那么163邮件服务器将邮件发送给126邮件服务器,然后126邮件服务器接收之后再给收件人。

    电子邮件主要提供以下功能:

    1. 接受用户投递的邮件
    2. 将用户投递进来的邮件转发给目标邮件服务器
    3. 接收其它邮件服务器转发来的邮件并把邮件存储到其管理的用户邮件中
    4. 为前来读取邮件的用户提供读取服务

    邮件服务器可以划分为两种类型:

    1. SMTP服务器:SMTP服务器用于替用户发送和接收外面发送给本地用户的邮件,它相当于我们现实生活中的邮局的邮件接收部门(可以接收普通用户要投出的邮件和其它邮局投递进来的邮件)。
    2. POP3/IMAP服务器:POP3/IMAP邮件服务器用于帮助用户读取SMIP服务器接收进来的该用户的邮件,它相当于专门为前来取包裹的用户提供服务的部门。

    2.电子邮箱
    每个电子邮件服务器之上都可以开设多个电子邮件,电子邮件也称之为Email地址,它类似现实生活中的通讯地址,用户可以通过这个地址接受别人发来的电子邮件和向别人发送电子邮件。电子邮箱的获得需要在邮件服务器上进行申请,确切的说,电子邮箱其实就是用户在邮件服务器上申请的一个账户。邮件服务器把接受到的邮件保存到为某个账户分配的邮箱空间中,用户通过其申请的用户名和密码登录到邮件服务器上查收该地址已经收到的电子邮件。

    3.邮件客户端软件
    邮件客户端软件负责与邮件服务器通讯,主要用于帮助用户将邮件发送给SMTP服务器从POP3/IMAP邮件服务器读取用户的电子邮件。邮件客户端软件通常集邮件撰写、发送和接收功能于一体。

    4.邮件传输协议
    协议就分为SMTP与POP3/IMAP协议,前者是用于收发邮件的协议,后者是用于读取SMTP服务器中的邮件的协议。

    5.电子邮件的传输过程

    上图就是一个用户在新浪邮件服务器中给地址为搜狐服务器的用户发邮件的过程。
    ————————————————
    版权声明:本文为CSDN博主「光仔December」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/acmman/article/details/69431969

    展开全文
  • 自己开发JAVA Web Email邮件系统
  • java邮件系统

    2014-02-26 17:55:56
    基于java邮件系统开发设计,在安卓环境下,用java编程来开发邮件系统
  • java电子邮件收发系统 java源代码(2.2版)

    千次下载 热门讨论 2011-04-24 04:32:21
    java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...
  • 基于JAvA的电子邮件系统 姓名:孔康华 班级:计师081 指导老师:严燕 总体内容 1.研究背景 2.开发系统基本知识 3.基本功能 4.进度计划 研究背景 电子邮件作为工 nternet最为广泛的应用之一,在人们的工作和生活中扮 演着...
  • 本人最近在做一个项目,需要先获取到数据库的邮箱,然后在发送邮件,用到了java mail开发。 但有个需求,就是发送邮件后我需要知道邮件是否发送成功,现在卡在这里。从好多网站查阅资料都只能通过try catch来捕捉...
  • ">最近想搞apache james 邮件服务器 集合 javamail 开发邮件系统,</span></p> <p><span style="color: #008000; font-size: medium;"> </span> <p><span style="color: #008000;">;">不过由于时间关系,想找个...
  • java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...
  • 在web应用中经常需要发送邮件,比如用户找回密码、系统异常时提醒开发人员、提醒用户生日、获取通知用户一些重要消息等等。 1.配置邮箱 1.1开启SMTP 这里以163为例 1.2开启邮箱授权码 授权码是用于登录第三...

    本项目详细介绍地址:https://zhuanlan.zhihu.com/p/74054179
    在web应用中经常需要发送邮件,比如用户找回密码、系统异常时提醒开发人员、提醒用户生日、获取通知用户一些重要消息等等。

    1.配置邮箱

    1.1开启SMTP

    这里以163为例
    在这里插入图片描述
    在这里插入图片描述

    1.2开启邮箱授权码

    授权码是用于登录第三方邮件客户端的专用密码。不同于邮箱密码,你用java代码发送邮箱时,使用邮箱密码是发不出去的,一定要填写自己在163设置的邮箱授权码。
    在这里插入图片描述

    2.使用java发送邮件

    2.1导入依赖

    你可以直接导入jar包,我这里使用的maven,直接导入坐标(GAV)让maven帮我下载jar。

    <dependency>
    	<groupId>com.sun.mail</groupId>
    	<artifactId>javax.mail</artifactId>
    	<version>1.5.6<version>
    </dependency>
    

    2.2使用java发送邮件

    有了jar包支撑后,可以调用jmail的api了。

    这个代码是在jmail的api上在进行一层封装,只需要将里面的邮箱和授权码换成你自己的,就可使用了。

    package com.taotao.search.utils;
     
    import java.util.Properties;
     
    import javax.mail.Address;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    public class MailUtils {
    	
    	public static void sendEmail(String email,String subject,String text) throws MessagingException {
    			//1.创建一个程序与邮件服务器会话对象 Session
    			Properties properties = new Properties();  
    	        properties.setProperty("mail.smtp.auth", "true");//设置访问smtp服务器需要认证  
    	        properties.setProperty("mail.transport.protocol", "smtp"); //设置访问服务器的协议  
    	        Session session = Session.getDefaultInstance(properties);  
    	        //session.setDebug(true); //打开debug功能  
    	        //2.创建一个Message,它相当于是邮件内容
    	        Message msg = new MimeMessage(session);  
    	        // 设置发送者
    	        msg.setFrom(new InternetAddress("123456798@163.com")); 
    	        msg.setSubject(subject); //设置邮件主题  
    	        msg.setText(text); //设置邮件内容  
    	        //3.发送邮件
    	        Transport trans = session.getTransport();  
    	        //连接邮箱smtp服务器;25为默认端口;163邮箱;客户端授权密码(注意,不是登录密码)
    	        trans.connect("smtp.163.com", 25, "123456798@163.com", "123456798"); 
    	        //邮件接收者
    	        if(email==null)email="123456798@163.com";
    	        trans.sendMessage(msg, new Address[]{new InternetAddress(email)}); //发送邮件  
    	        //关闭连接
    	        trans.close();  
    	}
    }
    

    2.3MailUtils测试

    我这里是自己发给自己,只需要修改邮件接收者的email即可
    在这里插入图片描述
    邮件发送成功,通过这种方式,可以给别人发送。
    在这里插入图片描述

    3.发送web系统异常给开发人员

    在全局异常处理器,增加发送邮件代码

    由于邮件发送太慢,所以新增线程发送
    在这里插入图片描述

    //发邮件、发短信
    		Runnable runnable =new Runnable() {
    			@Override
    			public void run() {
    				try {
    					MailUtils.sendEmail(null,"搜索页面出现异常", StackTrace.getStackTrace(e));
    				} catch (AddressException e) {
    					e.printStackTrace();
    				} catch (MessagingException e) {
    					e.printStackTrace();
    				}
    			}
    		};
    		Thread thread = new Thread(runnable);
    		thread.start();
    

    将抛出的异常堆栈信息转换为字符串,因为邮箱发送的是字符串,而我们无法直接将堆栈信息当成字符串来传,所以就需要转一下,新建工具类StackTrace
    在这里插入图片描述

    package com.taotao.search.utils;
     
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.io.Writer;
     
    public class StackTrace {
    	
    	public static String getStackTrace(Throwable throwable) {
    	    final Writer result = new StringWriter();
    	    final PrintWriter printWriter = new PrintWriter(result);
    	    throwable.printStackTrace(printWriter);
    	    return result.toString();
    	}
    }
    

    当系统发送异常,全局异常处理器就会将异常信息通过邮件发送给开发人员
    在这里插入图片描述

    展开全文
  • 在我上学期的时候就想过用JAVA开发邮件收发系统! 但是由于不清楚优缺点! 希望高手!大侠!讲解一下! ①JAVA 和其他语言开发邮件收发相比 有什么优点和缺点! ②JAVA开发的...
  • 前面介绍了电子邮件系统的基本知识,那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。  一、JavaMail简介  JavaMail,顾名思义,提供给开发者处理电子邮件相关的...
  • 基于JAVA的电子邮件系统;总体内容;研究背景;研究背景;常见协议;开发系统基本知识;开发系统基本知识;开发系统基本知识;基本功能;进度计划;谢 谢
  • 前面介绍了电子邮件系统的基本知识(Java邮件开发-----电子邮件的基本概念),那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。    一、JavaMail简介  JavaMail,...

     前面介绍了电子邮件系统的基本知识(Java邮件开发-----电子邮件的基本概念),那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。

     

             一、JavaMail简介

             JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP。开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了。

     

             二、JavaMail开发环境

             在进行JavaMail开发之前必须要导入相应的jar包。该jar包可以到oracle的官网上面下载:http://www.oracle.com/technetwork/java/javamail/index.html

             下载完成后解压可以得到如下一个目录:

             其中mail.jar:就是开发javamail程序所必须要用到的核心开发包。

             demo子目录:示例程序。

             demo子目录:示例程序

             lib子目录:该目录下包含5个独立的邮件开发包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,这5个jar文件是对mail.jar文件的分类包装。其中mailapi.jar封装了创建邮件内容和面向普通开发人员调用邮件发送和接收的API类,其它三个jar文件则是封装了它们名称相对应协议的服务实现程序。。在编译Java邮件程序时,只需要mailapi.jar文件即可,但是,在运行时必须要有相应邮件协议的底层服务实现程序。如果应用程序中只需要使用到邮件发送功能,则可以只安装smtp.jar和mailapi.jar这两个文件,如果应用程序只需要使用邮件的接收功能,则可以只安装pop3.jar或imap.jar和mailapi.jar这两个jar文件,而不用安装整个mail.jar文件。

             Lib目录如下:

             三、JavaMail API的介绍

             JavaMail API按其功能划分通常分为如下三大类“:

                 1、创建和解析邮件内容的API。Message类是创建和解析邮件的核心API。它的实例对象代表了一封电子邮件。

                 2、发送邮件的API。Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,如SMTP协议。

                 3、接收邮件的API。Store类是接收邮件的核心API类,它的实例对象代表了实现某个邮件接收协议的邮件接收对象,例如POP3协议。

             JavaMail的工作流程如下:

             在这个工作流程中,MessageSessionTransportStore四个对象紧密相连的完成一封电子邮件的发送和接收。我们只需要了解这个四个核心API的功能和作用,知道他们的工作关系和电子邮件的工作流程,就能够很容易的编写出JavaMail来了。对于JavaMail的辅助类而言,当我们需要他们的时候可以顺藤摸瓜,查看文档来解决。

             

             核心API的介绍:

             Message

             Message 类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。在客户端发送邮件时,先穿件邮件的API,将创建的邮件的数据封装到Message对象中,然后把这个对象传递给邮件发送API发送出去。在客户端接收到邮件时,邮件接收API把接收的油价数据装在Message的实例对象中,客户端在使用邮件解析API从这个对象中解析出来接收到的邮件数据。

             

             Session

             Session 类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些会话信息构建邮件收发的Store和Transport对象,以及为客户端创建Message对象提供信息支持。


             Transport
              Transport
    类是发送邮件的核心API类,它的实例对象,代表实现了某个邮件发送协议的邮件发送对象,例如SMTP 协议。客户端程序创建好Message对象后,只需要使用邮件发送API得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调用它的发送方法,就可以把邮件发送给指定的SMTP服务器。
             Store
              Store
    类是接收邮件的核心API类,它的实例对象代表实现某个邮件接收协议的邮件接收对象,例如POP3和IMAP协议。客户端程序接收邮件时,只需要使用邮件接收API得到Store对象,然后调用Store对象的接收方法,就可以从指定的 POP3服务器中获得邮件数据,并把这些邮件数据封装到表示邮件的Message对象中。

     

             四、发送邮件实例

    [java] view plaincopyprint?
    1. public class JavaMail_01 {  
    2.     public static void main(String[] args) throws Exception {  
    3.         Properties props = new Properties();  
    4.         props.setProperty("mail.smtp.auth""true");  
    5.         props.setProperty("mail.transport.protocol""smtp");  
    6.           
    7.         Session session = Session.getInstance(props);  
    8.         session.setDebug(true);  
    9.           
    10.         Message msg = new MimeMessage(session);  
    11.         msg.setSubject("这是一个测试程序....");  
    12.         msg.setText("你好!这是我的第一个javamail程序---陈明");  
    13.         msg.setFrom(new InternetAddress("******@163.com"));  
    14.   
    15.         Transport transport = session.getTransport();  
    16.         transport.connect("smtp.163.com"25"*******""********");  
    17.         transport.sendMessage(msg,new Address[]{new InternetAddress("chenssy995812509@sina.cn")});  
    18.   
    19.         System.out.println("邮件发送成功...");  
    20.         transport.close();  
    21.     } 

         五、将邮件发送给多个收件人和如何利用Authenticators对象实现用户验证

             在指定收件人的时候,我们可以有两种方法来指定。上篇博客是在发送邮件的时候临时指定收件人,其实还可以在Message对象中指定。

    1. message.addRecipient(Message.RecipientType.TO,new InternetAddress(” 995812509@99.com ”));  

             这个只是发送给一个收件人而言,但是有多个收件人如何处理?同样有两种方法来处理。

              1、在发送邮件时Transport的sendMessage()方法指定收件人时是使用数组来指定收件人的,这个时候我们只需要多添加收件人地址即可完成。

              2、在使用Message对象来添加收件人我们可以使用InternetAddress对象的parse(String string)方法,该方法返回的是InternetAddress数组,这样同样可以实现发送给多个收件人。

     

             我们知道在进行JavaMail开发时我们必须要进行授权校验,授权校验目的是阻止他人任意乱发邮件,减少垃圾邮件的产生。前篇博客中我是是用的Transport的connect(host,port,username,password)方法来进行校验的,其实我们还可以在获取Session对象的时候进行校验。在Session对象中有这两个方法:getDefaultInstance(prop,authenticator),getInstance(prop,authenticator),这两个方法都有一个共同的参数authenticator,该参数是一个Authenticator对象。Authenticator对象就是帮助用户进行信息验证的,完成授权校验。Authenticator对象中有getPasswordAuthentication()方法,该方法返回返回一个PasswordAuthentication对象,PasswordAuthentication对象中有两个方法:getPassword()getUserName()也就说我们将passworduserName封装在PasswordAuthentication对象,通过这两个方法就可以获取用户名和密码了。即可完成用户信息验证。

              实例如下:

    1. public class JavaMail_02 {  
    2.     public static void main(String[] args) throws Exception {  
    3.         Properties  props = new Properties();  
    4.         props.setProperty("mail.smtp.auth""true");  
    5.         props.setProperty("mail.transport.protocol""smtp");  
    6.         props.setProperty("mail.host""smtp.163.com");  
    7.           
    8.         Session session = Session.getInstance(props,  
    9.                 new Authenticator(){  
    10.                     protected PasswordAuthentication getPasswordAuthentication(){  
    11.                         return new PasswordAuthentication("********","*********");  
    12.                     }  
    13.         });  
    14.         session.setDebug(true);  
    15.           
    16.         Message msg = new MimeMessage(session);  
    17.         msg.setFrom(new InternetAddress("chenssy995812509@163.com"));  
    18.           
    19.         msg.setSubject("JavaMail测试程序...");  
    20.         msg.setContent("<span style='color:red'>这是我的第二个javaMail测试程序....</span>""text/html;charset=gbk");  
    21.         //msg.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("1111@@qq.com"),new InternetAddress("2222@qq.cpm")});  
    22.         msg.setRecipients(RecipientType.TO, InternetAddress.parse("995812509@qq.com,1247723213@qq.com"));  
    23.           
    24.         Transport.send(msg);  
    25.     }  
    26.   


        六、复合邮件开发

           在实际的电子邮件中我们一般都会涉及到更加复杂电子邮件结构,例如有附件、邮件正文里面包含图片、包含歌曲等等,在这个时候我们就必须要对邮件的结构有着很清晰的认识。在进行复合邮件开发之前需要对复合邮件的结构有一定的了解。

         

             上面这幅图片展示了一封复合邮件的整体结构,我们可以看出一封复杂的电子邮件由多个部分组成。它有一个头部和正文,但是正文并不是像以前那么简单了,而是由几个部分组成。头部需要起到一个指示的作用,它需要说明正文需要使用什么样的分隔符来分开,正文几个部分之间使用什么样的组合关系。对于上面电子邮件它由三个部分组成,每一部分都有自己头和体,第一部分也由两个部分组成。

     

             复合邮件的组合关系

             正文部分之间有多种组合关系。组合关系如下图:

            alternative:选择关系。上面的纯文本和超文本之间就是一种选择关系。

            related:关联关系。假如上面的超文本正文是展示一幅图片,那么我们在发送邮件的时候必须要将这幅图片包含到邮件中,也就是所谓的内嵌资源,这个内嵌资源是给超文本用的。所以他们两者之间是一个关联关系。

            mixed:混合关系。在纯文本、超文本和内嵌资源组成一个整体和,他们与附件并列着,两者之间就是一个混合关系了。

     

            复合邮件组织结构的API

     

            MimeMessage类表示整封电子邮件。

            MimeBodyPart类表示邮件的一个MiME消息。

            MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

     

            下面一个实例:该邮件里面包含两个附件、正文部分包括纯文本和超文本,超文本表示展示一张图片。源代码如下:

    1. public class JavaMail_03 {  
    2.   
    3.     public static void main(String[] args) throws Exception {  
    4.         Properties props = new Properties();  
    5.         props.setProperty("mail.smtp.auth""true");  
    6.         props.setProperty("mail.transport.protocol""smtp");  
    7.         props.setProperty("mail.host""smtp.163.com");  
    8.         Session session = Session.getInstance(props,  
    9.                 new Authenticator(){  
    10.                     protected PasswordAuthentication getPasswordAuthentication(){  
    11.                         return new PasswordAuthentication("*****","******");  
    12.                     }  
    13.         });  
    14.           
    15.         Message message = new MimeMessage(session);  
    16.         message.setSubject("第三个JavaMail测试程序");  
    17.         message.setFrom(new InternetAddress("\""+MimeUtility.encodeText("陈明")+"\"<chenssy995812509@163.com>"));  
    18.         message.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("995812509@qq.com")});  
    19.           
    20.         //邮件正文  
    21.         MimeMultipart multipart = new MimeMultipart("mixed");  
    22.         message.setContent(multipart);  
    23.         /* 
    24.          * 创建邮件的内容 
    25.          * 包括一个邮件正文和两个附件 
    26.          */  
    27.         MimeBodyPart content = new MimeBodyPart();      //邮件内容  
    28.         MimeBodyPart attch1 = new MimeBodyPart();      //附件1  
    29.         MimeBodyPart attch2 = new MimeBodyPart();      //附件2  
    30.         //将邮件内容添加到multipart中  
    31.         multipart.addBodyPart(content);  
    32.         multipart.addBodyPart(attch1);  
    33.         multipart.addBodyPart(attch2);  
    34.           
    35.         //设置附件1  
    36.         DataSource ds1 = new FileDataSource("G:\\电子书\\oracle口令.txt");  
    37.         DataHandler dh1 = new DataHandler(ds1);  
    38.         attch1.setDataHandler(dh1);  
    39.         attch1.setFileName("oracle.txt");  
    40.         //设置附件2  
    41.         DataSource ds2 = new FileDataSource("G:\\电子书\\账号.txt");  
    42.         DataHandler dh2 = new DataHandler(ds2);  
    43.         attch2.setDataHandler(dh2);  
    44.         attch2.setFileName(MimeUtility.encodeText("账号.txt"));  
    45.         /* 
    46.          * 设置内容(正文)---是一个复杂体 
    47.          * 包括HTML正文和显示一张图片 
    48.          */  
    49.         MimeMultipart bodyMultipart = new MimeMultipart("related");  
    50.         content.setContent(bodyMultipart);  
    51.         //构造正文  
    52.         MimeBodyPart htmlBody = new MimeBodyPart();  
    53.         MimeBodyPart gifBody = new MimeBodyPart();  
    54.         bodyMultipart.addBodyPart(htmlBody);  
    55.         bodyMultipart.addBodyPart(gifBody);  
    56.       
    57.         //设置图片  
    58.         DataSource gifds = new FileDataSource("F:\\图片\\图片\\4.jpg");  
    59.         DataHandler gifdh = new DataHandler(gifds);  
    60.         gifBody.setDataHandler(gifdh);  
    61.         gifBody.setHeader("Content-ID""<"+gifds.getName()+">");  
    62.         //gifBody.setHeader("Content-Location", "http://www.itcast.cn/logo.gif");  
    63.         //设置HTML正文  
    64.         htmlBody.setContent("<span style='color:red;font-size:16px'>这是我的第三个JavaMail测试哦!包括了附件和图片,有点儿复杂...</span><br>" +  
    65.                 "显示的图片<img src='cid:4.jpg'/>""text/html;charset=UTF-8");  
    66.           
    67.           
    68.         message.saveChanges();        //生成邮件  
    69.         Transport.send(message);  
    70.     }  
    71.   



    展开全文
  • 前面介绍了电子邮件系统的基本知识,那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。 一、JavaMail简介 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程...

    前面介绍了电子邮件系统的基本知识,那篇博客知识对基础理论知识做一些简要介绍,并不妨碍我们做邮件开发。现在开始Java邮件开发。

     

             一、JavaMail简介

             JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP。开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了。

     

             二、JavaMail开发环境

             在进行JavaMail开发之前必须要导入相应的jar包。该jar包可以到oracle的官网上面下载:http://www.oracle.com/technetwork/java/javamail/index.html

             下载完成后解压可以得到如下一个目录:

     

             其中mail.jar:就是开发javamail程序所必须要用到的核心开发包。

             demo子目录:示例程序。

             demo子目录:示例程序

             lib子目录:该目录下包含5个独立的邮件开发包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,这5个jar文件是对mail.jar文件的分类包装。其中mailapi.jar封装了创建邮件内容和面向普通开发人员调用邮件发送和接收的API类,其它三个jar文件则是封装了它们名称相对应协议的服务实现程序。。在编译Java邮件程序时,只需要mailapi.jar文件即可,但是,在运行时必须要有相应邮件协议的底层服务实现程序。如果应用程序中只需要使用到邮件发送功能,则可以只安装smtp.jar和mailapi.jar这两个文件,如果应用程序只需要使用邮件的接收功能,则可以只安装pop3.jar或imap.jar和mailapi.jar这两个jar文件,而不用安装整个mail.jar文件。

             Lib目录如下:

             三、JavaMail API的介绍

             JavaMail API按其功能划分通常分为如下三大类“:

                 1、创建和解析邮件内容的API。Message类是创建和解析邮件的核心API。它的实例对象代表了一封电子邮件。

                 2、发送邮件的API。Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,如SMTP协议。

                 3、接收邮件的API。Store类是接收邮件的核心API类,它的实例对象代表了实现某个邮件接收协议的邮件接收对象,例如POP3协议。

             JavaMail的工作流程如下:

             在这个工作流程中,MessageSessionTransportStore四个对象紧密相连的完成一封电子邮件的发送和接收。我们只需要了解这个四个核心API的功能和作用,知道他们的工作关系和电子邮件的工作流程,就能够很容易的编写出JavaMail来了。对于JavaMail的辅助类而言,当我们需要他们的时候可以顺藤摸瓜,查看文档来解决。

             

             核心API的介绍:

                 Message

             Message 类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。在客户端发送邮件时,先穿件邮件的API,将创建的邮件的数据封装到Message对象中,然后把这个对象传递给邮件发送API发送出去。在客户端接收到邮件时,邮件接收API把接收的油价数据装在Message的实例对象中,客户端在使用邮件解析API从这个对象中解析出来接收到的邮件数据。

             

             Session

             Session 类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些会话信息构建邮件收发的Store和Transport对象,以及为客户端创建Message对象提供信息支持。


             Transport
              Transport
    类是发送邮件的核心API类,它的实例对象,代表实现了某个邮件发送协议的邮件发送对象,例如SMTP 协议。客户端程序创建好Message对象后,只需要使用邮件发送API得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调用它的发送方法,就可以把邮件发送给指定的SMTP服务器。
             Store
              Store
    类是接收邮件的核心API类,它的实例对象代表实现某个邮件接收协议的邮件接收对象,例如POP3和IMAP协议。客户端程序接收邮件时,只需要使用邮件接收API得到Store对象,然后调用Store对象的接收方法,就可以从指定的 POP3服务器中获得邮件数据,并把这些邮件数据封装到表示邮件的Message对象中。

     

             四、实例

    复制代码
     1 public class JavaMail_01 {
     2     public static void main(String[] args) throws Exception {
     3         Properties props = new Properties();
     4         props.setProperty("mail.smtp.auth", "true");
     5         props.setProperty("mail.transport.protocol", "smtp");
     6         
     7         Session session = Session.getInstance(props);
     8         session.setDebug(true);
     9         
    10         Message msg = new MimeMessage(session);
    11         msg.setSubject("这是一个测试程序....");
    12         msg.setText("你好!这是我的第一个javamail程序---陈明");
    13         msg.setFrom(new InternetAddress("******@163.com"));
    14 
    15         Transport transport = session.getTransport();
    16         transport.connect("smtp.163.com", 25, "*******", "********");
    17          transport.sendMessage(msg,new Address[]{new InternetAddress("chenssy995812509@sina.cn")});
    18 
    19         System.out.println("邮件发送成功...");
    20         transport.close();
    21     }
    22 }
    复制代码

    转载于:https://www.cnblogs.com/kscnchina/archive/2012/12/10/2810922.html

    展开全文
  • 本文我们将基于JavaMail服务,开发一个通用的发送邮件服务,用于发送邮件通知消息,并与上一篇章中已经实现的RabbitMQ异步发送消息的逻辑进行整合,彻底实现“用户秒杀成功后,异步发送邮件通知消息给到用户邮箱,...
  • L/O/G/O * * MyEclipse是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合MyEclipse的功能非常强大支持也十分广泛尤其是对各种开元产品的支持十分不错 Struts2是Struts的下一代产品是在Struts和WebWork的技术[3]...
  • 简介: 这是市面上无出其右的Java邮件培训视频,由于这套视频是结合了张孝祥老师对邮件系统的深刻理解、丰富的邮件实际开发经验,高超的教学技巧和精心的课程准备等诸多因素的产物,所以,从同一门技术内容上来看,它...
  • 基于Java邮件系统的设计与实现-初稿.doc 1 序 言 1 1.1 系统开发背景 1 1.2 选题的意义 1 1.3 系统简介 2 2 实现技术及开发工具 3 2.1 Java语言简介 3 2.2 Struts2简介 4 2.3 Spring简介 6 2.4 Hibernate简介 7 ...
  • 因此,本次设计是通过对SMTP、pop3协议的熟悉和理解、以及对JSP编程和网页设计技能的掌握,开发出一个简单的B/S结构下的邮件服务系统。能完成邮件的发送、接收、以及附件处理功能等。主要运用的软件有Eclipse, SQL ...
  • CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀...本文介绍 10 个最受欢迎的 CMS 系统,这 10 个系统的共同特点就是采用 Java 语言开发。Walrus CMS 是一个易用直观的 Jav...
  • 本次毕业设计使用JAVA技术完成邮件收发系统,实现邮件的接受和发送,并完成附件的传输,同时能实现邮件用户登录管理及邮件删除,收件箱,发件箱,草稿箱,垃圾箱,通讯录等功能,开发这个各种功能相对简单实用用邮件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 710
精华内容 284
关键字:

java开发邮件系统

java 订阅