收藏 分销(赏)

javamail应用一(基础).doc

上传人:仙人****88 文档编号:12039553 上传时间:2025-09-01 格式:DOC 页数:5 大小:23.30KB 下载积分:10 金币
下载 相关 举报
javamail应用一(基础).doc_第1页
第1页 / 共5页
javamail应用一(基础).doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
A、简介 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Store,Transport, Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 B、javaMail常用类 B .1、Properties java.util.Properties:JavaMail需要Properties来创建一个session对象。它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机,如:    Properties props = new Properties ();    props.put("mail.smtp.host", "");//可以换上你的smtp主机名。 B .2、Session Javax.mail.Session:Session类定义了一个基本邮件会话(session),是Java Mail API最高层入口类。所有其它类都是经由这个session才得以生效。Session对象用Java.util.Properties对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。 这个Session类代表JavaMail中的一个邮件session。每一个基于JavaMail的应用程序至少有一个session但是可以有任意多的session。Session对象需要知道用来处理邮件的SMTP服务器。为了做到这一点,你可以参照下面的例子用Properties 来创建一个Session 对象   Session sendMailSession;   sendMailSession = Session.getInstance(props, null); B .3、Message、MimeMessage Javax.mail.Message、javax.mail.MimeMessage:一旦获得Session对象,就可以继续创建要发送的消息。这由Message类来完成。因为Message是个抽象类,必需用一个子类,多数情况下为 Javax.mail.internet.MimeMessage。MimeMessage是个能理解MIME类型和头的电子邮件消息,正如不同RFC中所定义的。虽然在某些头部域非ASCII字符也能被译码,但Message头只能被限制为用 US-ASCII 字符。 Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。 Message newMessage = new MimeMessage(sendMailSession); B .4、Transport Javax.mail.Transport:消息发送的最后一部分是使用Transport类。这个类用协议指定的语言发送消息(通常是SMTP)。它是抽象类,它的工作方式与Session有些类似。仅调用静态send() 方法,就能使用类的缺省版本:Transport.send(message)。或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码(如果不必要就不传),发送消息,然后关闭连接。 邮件是既可以被发送也可以被受到。JavaMail使用了两个不同的类来完成这两个功能:Transport和Store。Transport是用来发送信息的,而Store用来收信。   Transport transport;   transport = sendMailSession.getTransport("smtp"); 用JavaMail Session对象的getTransport方法来初始化Transport。传过去的字符串申明了对象所要使用的协议,如"smtp"。这将为我们省了很多时间。因为JavaMail以境内置了很多协议的实现方法。 注意: JavaMail并不是绝对支持每一个协议,目前支持IMAP、 SMTP和 POP3。 B .5、Store Javax.mail.Store:Store类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。 Store store=s.getSorte("pop3"); store.connect(popserver,username,password); B .6、Folder Javax.mail.Folder:Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email的能力。 Folder folder=store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); B .7、Address、InternetAddress Javax.mail.Address、Javax.mail.internet.InternetAddress:一旦您创建了Session 和 Message,并将内容填入消息后,就可以用 Address 确定信件地址了。和 Message 一样,Address 也是个抽象类。您用的是 Javax.mail.internet.InternetAddress 类。 B .8、Authenticator Javax.mail. Authenticator:与 J 类一样,JavaMail API 也可以利用 Authenticator 通过用户名和密码访问受保护的资源。对于JavaMail API来说,这些资源就是邮件服务器。JavaMail Authenticator在Javax.mail包中,而且它和J中同名的类Authenticator不同。两者并不共享同一个Authenticator,因为JavaMail API 用于Java 1.1,它没有 J 类别。 要使用 Authenticator,先创建一个抽象类的子类,并从 getPasswordAuthentication() 方法中返回 PasswordAuthentication 实例。创建完成后,您必需向 session 注册 Authenticator。然后,在需要认证的时候,就会通知 Authenticator。您可以弹出窗口,也可以从配置文件中(虽然没有加密是不安全的)读取用户名和密码,将它们作为 PasswordAuthentication 对象返回给调用程序。 B .9、Multipart、MimeMultpart javax.mail.Multipart、javax.mail.Internet.MimeMultpart:一般保存电子邮件内容的容器是Multipart抽象类,它定义了增加和删除及获得电子邮件不同部分内容的方法。由于Multipart是抽象类,我们必须为它使用一个具体的子类,JavaMail API提供javax.mail.Internet.MimeMultpart类来使用MimeMessage对象。 MimeMultipart multipart=new MimeMultipart(); 注:我们使用MimeMultipart对象的一个方法是addBodyPart(),它在我们的电子邮件内容里添加BodyPart对象。消息可以有很多部分,一个BodyPart可以代表一个部分。 B .10、BodyPart 、MimeBodyPart javax.mail.BodyPart、javax.mail.Internet.MimeBodyPart:MimeBodyPart是BodyPart具体用于mimeMessage的一个子类。MimeBodyPart对象代表一个MimeMessage对象内容的一部分。每个MimeBodyPart被认为有两部分:MIME类型 和匹配这个类型的内容 MimeBodyPart mdp=new MimeBodyPart(); String text="Hello JavaMail!"; mdp.setContent(text,"text/plain"); //定义MIME类型为text/plain,并设置MimeBodyPart的内容 C、应用 C.1、通过SMTP发送一封邮件 package com.test; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SimpleSender { public static void main(String args[]) { try { String smtpServer = "192.168.1.254"; String to = "jizhou@"; String from = "lijy@"; String subject = "test mail"; String body = "test mail"; String msgAttachment = "This is an attachment string!"; send(smtpServer, to, from, subject, body, msgAttachment); } catch (Exception ex) { System.out.println(ex.toString()); } System.exit(0); } // 发送一封简单的邮件 public static void send(String smtpServer, String to, String from, String subject, String body) { try { Properties props = System.getProperties(); props.put("mail.smtp.host", smtpServer); /** * java 通过System.getProperties()获取系统参数, * 为Sesion.getDefultInstance准备参数。 */ Session session = Session.getDefaultInstance(props, null); /** * 首先要一个emailsession(java.mail.Session),没有它什么都做不了。 * 调用了Sesion.getDefultInstance(…)来得到一个共享session。 * 建立一个session需要设置一些属性。 如果你通过SMTP发送消息, * 那么至少需要设置mail.smtp.host属性。 * 在API文档中你可以找到其它的属性。 */ Message msg = new MimeMessage(session); /** * 一旦获得Session对象,就可以继续创建要发送的消息。 * 可以设置email地址信息、主题、正文、头信息、日期、复制(CC)收件人。 */ msg.setFrom(new InternetAddress(from)); // 发件人地址 InternetAddress[] address = { new InternetAddress(to) }; msg.setRecipients(Message.RecipientType.TO, address); // 收件人地址,可以是一个或多个。 msg.setSubject(subject); // 邮件主题 msg.setSentDate(new Date()); // 发送时间 msg.setText(body); // 邮件正文的内容 msg.setHeader("X-Mailer", "LOTONtechEmail"); Transport.send(msg); /** * 通过javax.mail.Transport类发送消息。 */ System.out.println("Message sent OK."); } catch (Exception ex) { ex.printStackTrace(); } } // 发送一封带有附件的邮件 public static void send(String smtpServer, String to, String from, String subject, String body, String msgAttachment) { try { Properties props = System.getProperties(); props.put("mail.smtp.host", smtpServer); Session session = Session.getDefaultInstance(props, null); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = { new InternetAddress(to) }; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(subject); msg.setSentDate(new Date()); msg.setHeader("X-Mailer", "LOTONtechEmail"); /** * 在邮件中加上附件。 要加入附件的话就要使用MimeBodyPart来创建邮件, * 只需把上面的程序稍加修改就可以了,为了简单起见, * 我在这里只是使用了一条字符串作为附件内容来解释如何添加附件。 */ MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText(body); // 把前面定义的msgText中的文字设定为邮件正文的内容 MimeBodyPart mbp2 = new MimeBodyPart(); mbp2.setText(msgAttachment, "utf-8"); // 创建附件部分 Multipart mp = new MimeMultipart(); // 创建Multipart mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); // 把前面定义的正文和附件都添加到Multipart中 msg.setContent(mp); // 添加 Multipart到Message中 Transport.send(msg); System.out.println("Message sent OK."); } catch (Exception ex) { ex.printStackTrace(); } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服