java email bean_JavaBean的实例--邮件发送JavaBean:基于Javax.mail

本文介绍了一个基于Javax.mail的JavaBean来发送邮件。首先通过Properties设置SMTP服务器信息,然后创建Session,接着使用Transport类发送邮件。Message对象用于存储邮件信息,包括标题、正文、发件人和收件人。示例展示了如何使用JavaBean从QQ邮箱发送邮件到另一个QQ邮箱。
摘要由CSDN通过智能技术生成

原理为:

首先将JavaMail连接属性保存在一个Properties类型的实例中,包括邮件主机名、是否需要认证等,然后根据此Properties的连接属性打开一个Session会话,接着在会话中创立邮件信息Message。Message包括邮件的标题、正文、发送人、接收人等。最后邮件通过一个Transport类的实例发送,Transport类首先连接服务器,然后发送,最后关闭连接。

1.Properties类

利用Properties类来创建一个Session对象。它的匹配字符串"mail.smtp.host",属性值是发送邮件的主机,如:

Properties props=newProperties();

props.put("mail.smtp.host","smtp.abcd.com");//可以换上你的smtp主机名

2.Session

Session类代表一个邮件会话。每个基于mail的应用程序至少有一个Session,也可以有任意多个。Session对象需要获得处理邮件的SMTP服务器。可以通过用一个Properties对象传递连接信息,来创建一个Session。

218d92821a4c6ac2d49d6487fcfe55bc.png

4d07beb5daa10d1b96d14e8b0f4770a3.png

Session sendMailSession;

sendMailSession=Session.getInstance(props,null);

3.Transport类

邮件既可以被发送也可以被接受。JavaMail提供了两个不同的类来完成这两个功能:Transport和Store。Transport用来发送信息,而Store用来接收信息。发送邮件只需要用到Transport对象,不需要用到Store类。

构造方法为:

849505d6a8402f3032cfa76ff1b271e5.png

构造例子:

Transport transport;

tranport=sendMailSession.getTransport("smtp");

JavaMail的Session对象提供了getTransport方法初始化Transport,初始化时类型为字符串的参数声明了对象所要使用的协议,如”smtp”。JavaMail内置了很多协议的实现方法,包括IMAP、SMTP和POP3。

4.Message

Message对象将存储世纪发送的电子邮件信息。Message对象被作为一个MimeMessage来创建,并且需要指明选择哪一个JavaMail的session。

Message newMessage=new MimeMessage(sendMailSession);

下面的实例是通过一个QQ发送一个邮件到另一个QQ:

发送邮件的JavaBean为:

1 packagesamples.javabean;2

3 importjava.util.Properties;4

5 importjavax.mail.AuthenticationFailedException;6 importjavax.mail.Message;7 importjavax.mail.Session;8 importjavax.mail.Transport;9 importjavax.mail.internet.InternetAddress;10 importjavax.mail.internet.MimeMessage;11

12 importcom.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;13

14

15 public classEmail {16 String host;17 String username;18 String password;19 String from;20 String to;21 String subject;22 String content;23

24 //在构造函数中初始化一些连接变量

25 publicEmail(){26 //qqsmtp服务器

27 host="smtp.qq.com";28 //QQ账号

29 username="*****";30 //QQ密码

31 password="****";32 from="****@qq.com";//QQ号邮箱地址

33 }34

35 publicString getHost() {36 returnhost;37 }38

39 public voidsetHost(String host) {40 this.host =host;41 }42

43 publicString getUsername() {44 returnusername;45 }46

47 public voidsetUsername(String username) {48 this.username =username;49 }50

51 publicString getPassword() {52 returnpassword;53 }54

55 public voidsetPassword(String password) {56 this.password =password;57 }58

59 publicString getFrom() {60 returnfrom;61 }62

63 public voidsetFrom(String from) {64 this.from =from;65 }66

67 publicString getTo() {68 returnto;69 }70

71 public voidsetTo(String to) {72 this.to =to;73 }74

75 publicString getSubject() {76 returnsubject;77 }78

79 public voidsetSubject(String subject) {80 this.subject =subject;81 }82

83 publicString getContent() {84 returncontent;85 }86

87 public voidsetContent(String content) {88 this.content =content;89 }90 //发送邮件

91 public booleansendMail(){92 Properties props;93 Session session;94 MimeMessage message;95 try{96 //存储连接参数

97 props=newProperties();98 //smtp主机

99 props.put("mail.smtp.host", host);100 //需要身份验证

101 props.put("mail.smtp.auth", "true");102 //获得一个邮件session

103 session=Session.getDefaultInstance(props,null);104 //新建一个邮件信息

105 message=newMimeMessage(session);106 if(from==null||from==""){107 throw new Exception("Error Email Address in From.");108 }109 if(to==null||to==""){110 throw new Exception("Error Email Address in To.");111 }112 //设置源地址

113 message.setFrom(newInternetAddress(from));114 //设置目的地址

115 InternetAddress address=newInternetAddress(to);116 message.addRecipient(Message.RecipientType.TO, address);117 //设置主题

118 message.setSubject(subject);119 //邮件内容

120 message.setText("123");121 message.saveChanges();122 //设置邮件传输

123 Transport transport=session.getTransport("smtp");124 //连接主机

125 transport.connect(username, password);126 //发送邮件

127 transport.sendMessage(message, message.getAllRecipients());128 //关闭传输

129 transport.close();130 return true;131 }catch(AuthenticationFailedException e1){132 e1.printStackTrace();133 return false;134 }catch(MessagingException e2){135 e2.printStackTrace();136 return false;137 }catch(Exception e3){138 e3.printStackTrace();139 return false;140 }141 }142 }

接着在jsp中调用这个JavaBean:

1

2 pageEncoding="GB18030"%>

3

4

5

6

7

Insert title here

8

9

10

11

12

13

14

15

16

17 Email JavaBean的类

18 发送人:

19 发送给:

20 标题:

21 服务器地址:

22 内容:

23

24 发送是否成功:

25

26

运行结果为:

96d58191926c252d86cbf4ad139cc3bb.png

3bd768453a8dfcf3fd5bfd696589a344.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值