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 ...
随机推荐
- Exception 01 : org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo]
异常名称 org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [foo] 异常截屏 异常详细信息 org.hibernat ...
- Python不使用int()函数把字符串转换为数字
Python不使用int()函数把字符串转换为数字 2018年05月21日 14:18:45 边缘ob边缘ob 阅读数:1035 https://blog.csdn.net/qq_33192555/a ...
- LeetCode 771 Jewels and Stones 解题报告
题目要求 You're given strings J representing the types of stones that are jewels, and S representing the ...
- Java之旅_面向对象_包(Package)
http://www.runoob.com/java/java-package.html 包的作用: 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用 ...
- js面向对象、创建对象的工厂模式、构造函数模式、原型链模式
JS面向对象编程(转载) 什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程. 面向对象编程的特点 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有对象上继承出新的对象 ...
- 【Python基础】*args,**args的详细用法
Python基础知识:*args,**args的详细用法 参考:https://blog.csdn.net/qq_29287973/article/details/78040291 *args 不定 ...
- 两个java工程之间的相互调用方法
如果你有两个java项目的话,如何向他们之间进行信息的通信前提:必须知道要通信的java项目(接收请求方)的服务器的IP地址和访问路径.其实两个java项目之间的通信还是使用HTTP的请求.主要有两种 ...
- Spring 配置文件出现异常!
spring配置文件错误 Referenced file contains errors (http://www.springframework.org/schema/beans/spring-bea ...
- 【托业】【新托业TOEIC新题型真题】学习笔记11-题库六-P7
1.scam [skæm] n.骗局; 诡计; <美俚>诓骗; 故事;vt.欺诈; 诓骗; 2.interpersonal adj.人与人之间的; 人际的; 人与人之间的关系的; 涉及人与 ...
- MongoDB 新建数据库和集合 查询集合
MongoDB语法是原生ORM,根本不存在sql语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 新建数据库db1 > use db1 switched to db ...