- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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页的属性的属性。这些属性 。
我们有没有考虑过上述各个属性的任何验证,验证将被添加在下一章。现在让我们看看在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。这会给出以下画面:
输入所需信息,并单击“Send Email ”按钮。如果一切顺利,那么应该看到以下页面:
如果是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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在使用 voip 推送通知制作 ios 应用程序。 我想从 Node js 发送 voip 推送通知,但不是很好。 我阅读了本教程 CallKit iOS Swift Tutorial for V
我编写了一个服务器,当浏览器尝试连接到某些站点时,它会检查黑名单并发回 404,但是当我调用 send() 时没有错误,但消息不会出现在网络上浏览器,除非我关闭连接? 有什么建议吗? 接受来自浏览器的
#include int main() { char c = getchar(); //EOF (ctrl + d ) while( ( c = getchar() ) != '?'
我正在尝试使用MailMessage对象通过PowerShell发送电子邮件。该脚本使用Import-CSV来使用文件,然后在电子邮件正文中使用ConvertTo-HTML。由于我要发送的电子邮件客户
我需要创建一个脚本,每 30 秒对网络流量进行一次采样并存储发送/接收的字节。该数据随后用于绘制图形。我编写了一个在 Windows 2012 上完美运行的程序,但我意识到某些 cmdlet 在以前的
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
当我使用网络浏览器测试我的程序时,我可以很好地写入套接字/FD,所以我决定循环它并在连接中途切断连接,我发现了一个问题。 send() 能够在套接字不可用时关闭整个程序。我认为问题在于该程序陷入了第
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
所以我试图向自己发送数据并接收数据然后打印它,现在我已经测试了一段时间,我注意到它没有发送任何东西,事实上,也许它是,但我没有正确接收它,我需要这方面的帮助。 这就是我用来发送数据的
问题:开发人员创建自己的序列化格式有多常见?具体来说,我使用 java 本质上将对象作为一个巨大的字符串发送,并用标记来分隔变量。 我的逻辑:我选择这个是因为它几乎消除了语言依赖性(忽略java的修改
我必须在 Linux 上编写一个应用程序,该应用程序需要与具有自定义以太网类型的设备进行通信。甚至在如何编写这样的应用程序中也有很多解决方案。一个缺点是需要 root 访问权限(AFAIK)。之后释放
我有一个包含三个单选按钮选项的表单。我需要将表单数据提交到另一个文件,但由于某种原因,发送的数据包含所选单选按钮的值“on”,而不是 value 属性的值。 我尝试通过 post() 函数手动操作和发
基本上我想实现这样的目标: Process 1 Thread 1 Receive X from process 2 Thread 2 Receive Y from proces
我目前正在 Google App Engine 上开发一个系统,对它还很陌生,我正在使用 Java 平台进行开发。我在 servlet 之间发送 session 对象时遇到问题。我已经在 appeng
当我尝试将“this”(触发的元素)作为参数发送给函数时,函数收到“Object[Document build.php]”作为参数,而不是触发的元素。请让我知道我的错误: function set(a
我正在寻找让我的应用响应联系人 > 发送的魔法咒语。我希望能够接收联系人的 URI 以便检索联系人。谁有 list 过滤器/代码 fragment 吗? 最佳答案 我没有睾丸,但您可以尝试基于 ACT
关于我心爱的套接字的另一个问题。我先解释一下我的情况。之后我会告诉你是什么困扰着我。 我有一个客户端和一个服务器。这两个应用程序都是用 C++ 编写的,实现了 winsock2。连接通过 TCP 和
我看到了这篇文章 http://www.eskimo.com/~scs/cclass/int/sx5.html 但这部分让我感到困惑:如果我们已经使用 send_array 或 send_array_
我对这行代码有疑问。我必须将一个数据包带到一个端口并重新发送到接口(interface)(例如:eth0)。我的程序成功地从端口获取数据包,但是当我重新发送(使用 send())到接口(interfa
我正在尝试编写一个 X11 输入驱动程序,它可以使用我的 Android 手机上的触摸屏来移动和单击鼠标。我可以正常移动鼠标,但我无法让应用程序正确识别点击。我当前的代码位于 https://gist
我是一名优秀的程序员,十分优秀!