javamail应用一(基础).doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javamail 应用 基础
- 资源描述:
-
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(); } } }展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




javamail应用一(基础).doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12039553.html