在实现邮件发送的时候首先需要用到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. Django:视图views(一)

    1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...

  2. cocos2dx 粒子系统

    参考文献: 1.http://blog.csdn.net/aa4790139/article/details/8126525 2.https://code.google.com/p/cocos2d-w ...

  3. 用2个DATETIMEPICKER分别输入时间和日期,再合并成一个DATETIME类型

    DtpDate为日期的,DtpTime为时间的 StrToDateTime(FormatDateTime('yyyy-MM-dd', DtpDate.Date) + ' ' + TimeToStr(D ...

  4. 最全的MonkeyRunner自动化测试从入门到精通(2)

    一.Python环境变量的配置 步骤一:在官网进行下载python安装包,官网下载的路径:https://www.python.org/,如图所示: 步骤二:下载完成后,双击安装包,进行如下安装的界面 ...

  5. 使用Bootstrap Popover实现一个弹框上三角形的代码记录

          $(function () {        var options = {          trigger: 'manual',          content: function ...

  6. 【JMeter】【性能测试】配置元件

    HTTP Cookie Manager 用来存储浏览器产生的用户信息 Clear Cookies each Iteration:每次迭代请求,清空cookies,GUI中定义的任何cookie都不会被 ...

  7. Python统计日志中每个IP出现次数

    介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下 本脚本可用于多种日志类型 #-*- coding:utf-8 -* ...

  8. Unity3D加密流程文档

    一键搞定源代码.资源等保护 代码被反编译破解,无可奈何? Unity3D 开发的软件程序,无论使用虚拟化,还是混淆,都无法抵抗住黑客丧心病狂的破解,轻松被反编译,令开发商无比头疼. 图片等资源保护被盗 ...

  9. python的运行机制

    不需要生成二进制代码,python解释器把源码->字节码,然后在执行这些字节码. 解释器的具体工作: 1.完成模块(module)的加载和链接 2.将源代码编译成pyCodeObject(字节码 ...

  10. EOS config 大全

    https://eosfans.io/topics/930 bnet_plugin bnet-endpoint: 所监听的传入链接的端点. 默认:0.0.0.0:4321 bnet-follow-ir ...