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

原理为:

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

1.Properties类

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

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

2.Session

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

Session sendMailSession;
sendMailSession=Session.getInstance(props,null);

3.Transport类

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

构造方法为:

构造例子:

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 package samples.javabean;
  2 
  3 import java.util.Properties;
  4 
  5 import javax.mail.AuthenticationFailedException;
  6 import javax.mail.Message;
  7 import javax.mail.Session;
  8 import javax.mail.Transport;
  9 import javax.mail.internet.InternetAddress;
 10 import javax.mail.internet.MimeMessage;
 11 
 12 import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
 13 
 14 
 15 public class Email {
 16     String host;
 17     String username;
 18     String password;
 19     String from;
 20     String to;
 21     String subject;
 22     String content;
 23     
 24     //在构造函数中初始化一些连接变量
 25     public Email(){
 26 //        qqsmtp服务器
 27         host="smtp.qq.com";
 28 //        QQ账号
 29         username="*****";
 30 //        QQ密码
 31         password="****";
 32         from="****@qq.com";//QQ号邮箱地址
 33     }
 34 
 35     public String getHost() {
 36         return host;
 37     }
 38 
 39     public void setHost(String host) {
 40         this.host = host;
 41     }
 42 
 43     public String getUsername() {
 44         return username;
 45     }
 46 
 47     public void setUsername(String username) {
 48         this.username = username;
 49     }
 50 
 51     public String getPassword() {
 52         return password;
 53     }
 54 
 55     public void setPassword(String password) {
 56         this.password = password;
 57     }
 58 
 59     public String getFrom() {
 60         return from;
 61     }
 62 
 63     public void setFrom(String from) {
 64         this.from = from;
 65     }
 66 
 67     public String getTo() {
 68         return to;
 69     }
 70 
 71     public void setTo(String to) {
 72         this.to = to;
 73     }
 74 
 75     public String getSubject() {
 76         return subject;
 77     }
 78 
 79     public void setSubject(String subject) {
 80         this.subject = subject;
 81     }
 82 
 83     public String getContent() {
 84         return content;
 85     }
 86 
 87     public void setContent(String content) {
 88         this.content = content;
 89     }
 90     //发送邮件
 91     public boolean sendMail(){
 92         Properties props;
 93         Session session;
 94         MimeMessage message;
 95         try{
 96             //存储连接参数
 97             props=new Properties();
 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=new  MimeMessage(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(new InternetAddress(from));
114             //设置目的地址
115             InternetAddress address=new InternetAddress(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 <%@ page language="java" contentType="text/html; charset=GB18030"
 2     pageEncoding="GB18030"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <%--通过useBean标签初始化一个JavaBean --%>
11 <jsp:useBean id="email" class="samples.javabean.Email"scope="page"></jsp:useBean>
12 <%--通过setProperty标签设置JavaBean的属性. --%>
13 <jsp:setProperty property="to" name="email" value="330647881@qq.com"/>
14 <jsp:setProperty property="subject" name="email" value="Send Email"/>
15 <jsp:setProperty property="content" name="email" value="Test Content"/>
16 <%--通过getProperty标签获取JavaBean的属性。 --%>
17     Email JavaBean的类<%=email.getClass().getName() %><br>
18     发送人:<jsp:getProperty property="from" name="email"/><br>
19     发送给:<jsp:getProperty property="to" name="email"/><br>
20     标题:<jsp:getProperty property="subject" name="email"/><br>
21     服务器地址:<jsp:getProperty property="host" name="email"/><br>
22     内容:<jsp:getProperty property="content" name="email"/><br>
23     <%--调用sendMail方法发送邮件 --%>
24     发送是否成功:<%=email.sendMail() %>
25 </body>
26 </html>

运行结果为:

 

 

 

转载于:https://www.cnblogs.com/Jim-Huang/archive/2012/11/01/2749576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值