在实现邮件发送的时候首先需要用到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实现邮件发送功能的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  3. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  4. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  5. shell邮件发送功能实现

    本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...

  6. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  7. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  8. System.Net邮件发送功能踩过的坑

    System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...

  9. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

随机推荐

  1. Haproxy的三种保持客户端会话保持方式

    2017-03-25 15:41:41   haproxy 三种保持客户端Seesion; 一.源地址hash(用户IP识别) haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类 ...

  2. piano class 12

    1,不要记谱子,眼睛要一直看着谱子,手指凭感觉找琴键 2,弹的时候一定要按照谱子上标出来的指法弹奏,很重要 3,两只手要会跷跷板弹奏 4,八分音符,一般第二个会比第一个弱一点,但是要看自己感觉 5,慢 ...

  3. OPTIMIZE TABLE linked list 表优化原理 链表数据结构 空间再利用

    小结: 1.加快读写: 2.对于InnoDB表,在一定条件下,通过复制旧表重建: 3.实践中, 3.1.show processlist;查看线程,发现,认为堵塞读请求: 3.2.数据长度空间不变,索 ...

  4. 2016年蓝桥杯省赛A组c++第9题(逆序串问题)

    /* X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远,其中许 ...

  5. json和pickle,XML

    什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON ...

  6. pandas基础

    1.相关库导入 2.创建数据结构 pandas 有两个重要的数据结构: Series 和 DataFrame 创建Series数组,代表一行或一列 创建DataFrame ,代表二维数组 第一种方式: ...

  7. Why does the memory usage increase when I redeploy a web application?

    That is because your web application has a memory leak. A common issue are "PermGen" memor ...

  8. php魔术变量和13个PHP魔术函数

    PHP魔术变量确切地说是PHP魔术常量,不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了.比如说__LINE__放在不同的地方是显示不 ...

  9. vue 动态绑定背景图片

    html <div class="racetm" :style="{backgroundImage: 'url(' + (coverImgUrl ? coverIm ...

  10. Cartographer源码阅读(1):程序入口

    带着几个思考问题: (1)IMU数据的使用,如何融合,Kalman滤波? (2)图优化的具体实现,闭环检测的策略? (3)3D激光的接入和闭环策略? 1. 安装Kdevelop工具: http://b ...