gpt4 book ai didi

利用Java的Struts框架实现电子邮件发送功能

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章利用Java的Struts框架实现电子邮件发送功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本章将教你如何使用Struts2 的应用程序发送电子邮件。对于此练习中,需要下载并安装将mail.jar 从 JavaMail API1.4.4,并将 mail.jar文件放置在WEB-INFlib文件夹,然后继续遵循的标准步骤创建动作,视图和配置文件.

创建动作: 下一步是创建一个Action方法,发送电子邮件。让我们创建一个新类称为 Emailer.java 以下内容.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.yiibai.struts2;
 
import java.util.Properties;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class Emailer extends ActionSupport {
 
   private String from;
   private String password;
   private String to;
   private String subject;
   private String body;
 
   static Properties properties = new Properties();
   static
   {
    properties.put( "mail.smtp.host" , "smtp.gmail.com" );
    properties.put( "mail.smtp.socketFactory.port" , "465" );
    properties.put( "mail.smtp.socketFactory.class" ,
            "javax.net.ssl.SSLSocketFactory" );
    properties.put( "mail.smtp.auth" , "true" );
    properties.put( "mail.smtp.port" , "465" );
   }
 
   public String execute()
   {
    String ret = SUCCESS;
    try
    {
      Session session = Session.getDefaultInstance(properties,
       new javax.mail.Authenticator() {
       protected PasswordAuthentication
       getPasswordAuthentication() {
       return new
       PasswordAuthentication(from, password);
       }});
 
      Message message = new MimeMessage(session);
      message.setFrom( new InternetAddress(from));
      message.setRecipients(Message.RecipientType.TO,
       InternetAddress.parse(to));
      message.setSubject(subject);
      message.setText(body);
      Transport.send(message);
    }
    catch (Exception e)
    {
      ret = ERROR;
      e.printStackTrace();
    }
    return ret;
   }
 
   public String getFrom() {
    return from;
   }
 
   public void setFrom(String from) {
    this .from = from;
   }
 
   public String getPassword() {
    return password;
   }
 
   public void setPassword(String password) {
    this .password = password;
   }
 
   public String getTo() {
    return to;
   }
 
   public void setTo(String to) {
    this .to = to;
   }
 
   public String getSubject() {
    return subject;
   }
 
   public void setSubject(String subject) {
    this .subject = subject;
   }
 
   public String getBody() {
    return body;
   }
 
   public void setBody(String body) {
    this .body = body;
   }
 
   public static Properties getProperties() {
    return properties;
   }
 
   public static void setProperties(Properties properties) {
    Emailer.properties = properties;
   }
}

可以看到在上面的源代码中,Emailer.java有对应的形式在下面给出的email.jsp页的属性的属性。这些属性 。

  • from - 发件人的电子邮件地址。由于我们使用的是谷歌的SMTP,我们需要一个有效的gtalk ID
  • password - 上述帐户的密码
  • to - 给谁发送电子邮件?
  • Subject - 电子邮件主题
  • body - 实际的电子邮件消息

我们有没有考虑过上述各个属性的任何验证,验证将被添加在下一章。现在让我们看看在execute()方法。 execute()方法使用使用javax邮件库发送一封电子邮件,使用提供的参数。如果邮件被发送,动作返回 SUCCESS,否则它返回ERROR.

创建主页页: 让我们编写主页index.jsp的JSP文件,这将被用来收集电子邮件的相关信息,上面提到的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language= "java" contentType= "text/html; charset=ISO-8859-1"
   pageEncoding= "ISO-8859-1" %>
<%@ taglib prefix= "s" uri= "/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Email Form</title>
</head>
<body>
   <em>The form below uses Google's SMTP server.
   So you need to enter a gmail username and password
   </em>
   <form action= "emailer" method= "post" >
   <label for = "from" >From</label><br/>
   <input type= "text" name= "from" /><br/>
   <label for = "password" >Password</label><br/>
   <input type= "password" name= "password" /><br/>
   <label for = "to" >To</label><br/>
   <input type= "text" name= "to" /><br/>
   <label for = "subject" >Subject</label><br/>
   <input type= "text" name= "subject" /><br/>
   <label for = "body" >Body</label><br/>
   <input type= "text" name= "body" /><br/>
   <input type= "submit" value= "Send Email" />
   </form>
</body>
</html>

创建视图: 我们将使用JSP文件的success.jsp将被调用的情况下行动返回SUCCESS,但在发生ERROR 的情况下,我们将有另一种视图认为文件是从操作返回.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language= "java" contentType= "text/html; charset=ISO-8859-1"
  pageEncoding= "ISO-8859-1" %>
<%@ taglib prefix= "s" uri= "/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Email Success</title>
</head>
<body>
   Your email to <s:property value= "to" /> was sent successfully.
</body>
</html>

下面将是在一个错误的情况下,从动作返回视图文件error.jsp.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language= "java" contentType= "text/html; charset=ISO-8859-1"
  pageEncoding= "ISO-8859-1" %>
<%@ taglib prefix= "s" uri= "/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Email Error</title>
</head>
<body>
   There is a problem sending your email to <s:property value= "to" />.
</body>
</html>

配置文件: 现在,让我们将这一切组合起来使用struts.xml的配置文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
 
< struts >
 
   < constant name = "struts.devMode" value = "true" />
   < package name = "helloworld" extends = "struts-default" >
 
    < action name = "emailer"
      class = "com.yiibai.struts2.Emailer"
      method = "execute" >
      < result name = "success" >/success.jsp</ result >
      < result name = "error" >/error.jsp</ result >
    </ action >
 
   </ package >
 
</ struts >

以下是web.xml文件中的内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee"
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0" >
  
   < display-name >Struts 2</ display-name >
   < welcome-file-list >
    < welcome-file >index.jsp</ welcome-file >
   </ welcome-file-list >
 
   < filter >
    < filter-name >struts2</ filter-name >
    < filter-class >
      org.apache.struts2.dispatcher.FilterDispatcher
    </ filter-class >
   </ filter >
 
   < filter-mapping >
    < filter-name >struts2</ filter-name >
    < url-pattern >/*</ url-pattern >
   </ filter-mapping >
</ web-app >

现在,右键点击项目名称,并单击 Export > WAR File创建一个WAR文件。然后部署此WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。这会给出以下画面:

利用Java的Struts框架实现电子邮件发送功能

输入所需信息,并单击“Send Email ”按钮。如果一切顺利,那么应该看到以下页面:

利用Java的Struts框架实现电子邮件发送功能

如果是SSH三个框架配合起来使用,这里再给个例子,不过struts和spring的框架外,也需要mail.jar,activation.jar. 。

1) 首先在applicationContext.xml文件中配置bean 。

?
1
2
3
4
5
6
7
8
9
< bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" >
     < property name = "host" value = "host" />
     < property name = "username" value = "username" />
     < property name = "password" value = "password" />
   </ bean >
 
< bean id = "sendMailAction" class = "cn.com.action.SendMailAction" singleton = "false" >
    < property name = "mailSender" >< ref bean = "mailSender" /> </ property >
</ bean >

2)实现发送邮件java类代码 。

?
1
2
3
4
5
6
7
8
9
10
protected JavaMailSenderImpl mailSender;
 
 
public class SendMailAction extends ActionSupport{
public void setMailSender(JavaMailSenderImpl mailSender) {
   this .mailSender = mailSender;
}
 
 
public void sendMail() throws Exception {

1:简单邮件 。

?
1
2
3
4
5
6
7
8
9
10
protected JavaMailSenderImpl mailSender;
 
 
public class SendMailAction extends ActionSupport{
public void setMailSender(JavaMailSenderImpl mailSender) {
   this .mailSender = mailSender;
}
 
 
public void sendMail() throws Exception {

2:HTML邮件的发送 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//建立邮件消息,发送简单邮件和html邮件的区别
    MimeMessage mailMessage = senderImpl.createMimeMessage();
    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
         
   //设置收件人,寄件人
    messageHelper.setTo( "sun111@163.com" );
    messageHelper.setFrom( "webadmin@163.com" );
    messageHelper.setSubject( "测试HTML邮件!" );
   //true 表示启动HTML格式的邮件
    messageHelper.setText( "<html><head></head><body><h1>hello!!zhangjian</h1></body></html>" , true );
   
   //发送邮件
    senderImpl.send(mailMessage);

3:本类测试邮件中嵌套图片 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//建立邮件消息,发送简单邮件和html邮件的区别
    MimeMessage mailMessage = senderImpl.createMimeMessage();
   //注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,    
multipart模式
    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true );
   
   //设置收件人,寄件人
    messageHelper.setTo( "sun111@163.com" );
    messageHelper.setFrom( "webadmin@163.com" );
    messageHelper.setSubject( "测试邮件中嵌套图片!!" );
   //true 表示启动HTML格式的邮件
    messageHelper.setText( "<html><head></head><body><h1>hello!!zhangjian</h1>" +
     "<img src=" / " mce_src=" / "" cid:aaa/ "/></body></html>" , true );
      
    FileSystemResource img = new FileSystemResource( new File( "c:/aaa.jpg" ));
   
    messageHelper.addInline( "aaa" ,img);
   
   //发送邮件
    senderImpl.send(mailMessage);
 
}
}

最后此篇关于利用Java的Struts框架实现电子邮件发送功能的文章就讲到这里了,如果你想了解更多关于利用Java的Struts框架实现电子邮件发送功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com