struts实现邮件发送功能
在实现邮件发送的时候首先需要用到mail.jar开发包,有关mail.jar的下载可以去百度自行下载
下面是邮件发送核心代码
package com.yysj.lhb.action; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.Session;
import javax.mail.Transport; import java.util.List;
import java.util.Properties; /**
* 发送邮箱信息
* @author lhb
*
*/
public class EmailSender { private static final long serialVersionUID = 1L;
private MimeMessage mimeMessage;//MiME邮件对象
private Session session;//邮件会话对象;
private Properties properties;//系统属性
private boolean needAuth = false;//smtp是否需要认证
private String username="";//stmp认证用户和密码
private String password="";
private Multipart multipart;//Multipart对象,邮件内容,标题附件等内容添加到其中后再生成
private String log; public EmailSender() { } public EmailSender(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
} /**
* 设置系统属性
* @param hostName 主机名
*/
public void setSmtpHost(String hostName) {
System.out.println("系统属性:mail.smtp.host="+hostName);
if(properties == null) {
properties = System.getProperties();//获取系统属性对象
}
properties.put("mail.smtp.host", hostName);
properties.put("mail smtp.localhost", "localHostAddress");
} /**
* 创建Mime信息
* @return 成功返回true;否则返回false
*/
public boolean createMimeMessage() {
try {
System.out.println("准备获取邮件会话对象");
session = Session.getDefaultInstance(properties, null);//获取右键会话对象
} catch (Exception e) {
log = "获取邮件会话对象时发生错误!"+e.toString();
System.err.println(log);
return false;
}
try {
mimeMessage = new MimeMessage(session);//创建MIME邮件对象
multipart = new MimeMultipart();//
//Multipart is a container that holds multiple body parts
return true;
} catch (Exception e) {
log = "创建MIME邮件对象失败!"+e.toString();
System.err.println(log);
return false;
}
} /**
* 设置身份认证
* @param need
*/
public void setNeedAuth(boolean need) {
needAuth = need;
System.out.println("设置smtp身份认证:mail.smtp.auth="+need);
if(properties == null) {
properties = System.getProperties();
}
if(needAuth) {
properties.put("mail.smtp.auth", "true");
}else {
properties.put("mail.smtp.auth", "false");
}
}
/**
* 设置用户名和密码
* @param name
* @param pass
*/
public void setNamePass(String name,String pass) {
System.out.println("得到用户名和密码");
username = name;
password = pass;
} /**
* 设置邮件主题
* @param mailSubject
* @return
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题");
try {
mimeMessage.setSubject(MimeUtility.encodeText(mailSubject, "utf-8", "B"));
return true;
} catch (Exception e) {
log = "设置邮件主题发生错误!"+ e;
System.err.println(log);
return false;
}
} /**
* 设置邮件正文
* @param mailBody 正文内容
* @return 设置成功返回true;否则返回false
*/
public boolean setBody(String mailBody) {
try {
System.out.println("设置邮件体格式");
BodyPart bPart = new MimeBodyPart();
//转换中文格式
bPart.setContent("<meta http-equiv=Content-Type content=text/html;charset=utf-8>"+mailBody, "text/html;charset=utf-8");
multipart.addBodyPart(bPart);
return true;
} catch (Exception e) {
log = "设置邮件正文发生错误!"+e;
System.err.println(log);
return false;
}
}
/**
* 设置附件
* @param files
* @return
*/
public boolean setFiles(List<String> files) {
try {
for(String s : files) {
MimeBodyPart mimeBodyPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(s);//得到数据源
mimeBodyPart.setDataHandler(new DataHandler(fileDataSource));//得到附件本身并植入BodyPart
mimeBodyPart.setFileName(fileDataSource.getName());//得到文件名同样植入BodyPart
multipart.addBodyPart(mimeBodyPart);
}
return true;
} catch (Exception e) {
log = "增加附件时出错!"+e;
System.err.println(log);
return false;
}
} /**
* 按路径添加附件
* @param path
* @param name
* @return
*/
public boolean addFile(String path,String name) { try {
MimeBodyPart mimeBodyPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(path);//得到数据源
mimeBodyPart.setDataHandler(new DataHandler(fileDataSource));//得到附件本身并注入BodyPart
mimeBodyPart.setFileName(MimeUtility.encodeText(name,"utf-8","B"));
multipart.addBodyPart(mimeBodyPart);
return true;
} catch (Exception e) {
log = "增加附件出错"+e;
System.err.println(log);
return false;
} } /**
* 设置发信人
* @param from 发信人名称
* @return
*/
public boolean setFrom(String from) {
System.out.println("设置发信人");
try {
mimeMessage.setFrom(new InternetAddress(from));//设置发信人
return true;
} catch (Exception e) {
log = "设置发言人出错"+e;
return false;
}
} /**
* 设置收件人
* @param to
* @return
*/
public boolean setTo(String to) {
System.out.println("设置收件人");
if(to == null) {
return false;
}
try {
mimeMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
} catch (Exception e) {
log = "设置收件人错误"+e;
System.err.println(log);
return false;
}
} /**
*
* @param copyto
* @return
*/
public boolean setCopyTo(String copyto) {
if(copyto == null) {
return false;
}
try {
mimeMessage.setRecipients(Message.RecipientType.CC, (Address[])InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 发送邮件
* @return
*/
public boolean sendout() {
try {
mimeMessage.setContent(multipart);
mimeMessage.saveChanges();
System.out.println("正在发送邮件...");
Session mailSession = Session.getInstance(properties,null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)properties.get("mail.smtp.host"), username, password);
transport.sendMessage(mimeMessage, mimeMessage.getRecipients(Message.RecipientType.TO));
System.out.println("发送邮件成功!");
transport.close();
return true;
} catch (Exception e) {
log = "邮件发送失败!"+e;
System.err.println(log);
return false;
}
} public String getLog() {
return log;
} }
Java代码
action中的代码如下:
jsp代码
<div class="question_form_1">
<form action="questionForm" method="get" name="form1">
<div class="question_form_1_" style="color: #6e6e6e;">
<h3>有什么需要解惑? </h3>
<textarea class="question_form_youquestion" rows="10" cols="100" id="question_Text" name="question_Text" placeholder="请描述您的问题,比如:心脏前负荷和后负荷有什么区别?动脉血气如何分析? 什么是膜性肾病?"></textarea> <div class="question_form_1_" style="color: #6e6e6e;">
<h3>回复的邮箱或者手机号码</h3>
<input class="question_form_contactyou" id="contact_Customer" name="contact_Customer" type="text" placeholder="请输入您的联系方式" />
</div>
<div class="btn_div">
<input type="submit" id="submit" value="发 送" class="btn" />
</div>
</form>
</div>
页面
struts实现邮件发送功能的更多相关文章
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇
在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...
- redmine邮件发送功能配置详解
redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...
- .NET开发邮件发送功能
.NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知 ...
- shell邮件发送功能实现
本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...
- SpringBoot 2.X从0到1实现邮件发送功能
Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...
- spring-boot-route(二十二)实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...
- System.Net邮件发送功能踩过的坑
System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
随机推荐
- RabbitMQ的Q&A
默认的IP端口 amqp默认绑定IP(本机所有IP),端口:5672 clustering默认绑定IP(本机所有IP),端口:25672 RabbitMQ Management插件 (本机所有IP), ...
- Flink - CoGroup
使用方式, dataStream.coGroup(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time. ...
- 查找->静态查找表->折半查找(有序表)
文字描述 以有序表表示静态查找表时,可用折半查找算法查找指定元素. 折半查找过程是以处于区间中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至新的区间中间位置记录的关键字等 ...
- LeetCode 427 Construct Quad Tree 解题报告
题目要求 We want to use quad trees to store an N x N boolean grid. Each cell in the grid can only be tru ...
- LeetCode 806 Number of Lines To Write String 解题报告
题目要求 We are to write the letters of a given string S, from left to right into lines. Each line has m ...
- Django2.0跨域请求配置
跨域:通过js或python在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(Django)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- Java设计模式之模板模式及使用场景
模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义了模板,我们的剩余工作就是对其进行充实.丰润,完善它的不足之处. 定义模板采用抽象类 ...
- (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解
关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...
- 004-Quartz存储与持久化-基于quartz.properties的配置
一.概述 Quartz提供两种基本作业存储类型.第一种类型叫做RAMJobStore,第二种类型叫做JDBC作业存储.在默认情况下Quartz将任务调度的运行信息保存在内存中,这种方法提供了最佳的性能 ...
- 小程序要求的 TLS 版本必须大于等于 1.2
1.打开windows powershell 右击屏幕左下角的开始->所有程序->附件->“Windows PowerShell”. 2.在 PowerShell中运行以 ...