聊聊javaMail
今天闲着无事 看了看用java发送邮件的相关知识
代码参考自<<精通Java Web整合开发(JSP+AJAX+Struts+Hibernate)>>(第2版)
不多说 先上图
所用jar包如下:
activation.jar
mail.jar
smartupload.jar
其中第一个jar包支持的是带附件的邮件
前台textMail.html代码如下
<html>
<head>
<title>发送文本型邮件</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<h2>发送文本型邮件</h2>
<hr>
<form name="form1" method="post" action="sendMail1.jsp">
SMTP服务器:<input type="text" id="SMTPHost" name="SMTPHost">如smtp.qq.com<br>
登录帐号:<input type="text" id="user" name="user">若为qq邮箱 只用写qq号即可 不用写@qq.com 其他邮箱服务器类似<br>
登录密码:<input type="password" id="password" name="password"><br>
<br>
发件人邮箱:<input type="text" id="from" name="from"><br>
收件人邮箱:<input type="text" id="to" name="to"><br>
邮件标题:<input type="text" id="subject" name="subject"><br>
邮件内容:<textarea id="content" name="content" rows="5" cols="40"></textarea><br>
<br>
<input type="submit" name="submit" value="发送">
<input type="reset" name="reset" value="重填">
</form>
</body>
</html>
sendMail1.jsp代码如下
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="test.SendTextMail"%>
<jsp:useBean id="mySend" class="test.SendTextMail"></jsp:useBean>
<jsp:setProperty name="mySend" property="*"/>
<%
//注意这里我们通过JavaBean的自省机制完成了对其属性的赋值
boolean status = mySend.send();
if (status){
out.println("恭喜您,邮件发送成功!");
}else{
out.println("对不起,邮件发送失败!");
}
%>
这里面调用的SendTextMail 代码如下
package test;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
public class SendTextMail {
String SMTPHost=""; //SMTP服务器
String user=""; //登录SMTP服务器的帐号
String password=""; //登录SMTP服务器的密码
String from =""; //发件人邮箱
String to =""; //收件人邮箱
String subject =""; //邮件标题
String content =""; //邮件内容
//无参数构造方法
public SendTextMail() {}
//发送邮件
public boolean send(){
//创建一个属性对象
Properties props = new Properties();
//指定SMTP服务器
props.put("mail.smtp.host", SMTPHost);
//指定是否需要SMTP验证
props.put("mail.smtp.auth", "true");
try{
//创建一个授权验证对象
SmtpAuth auth = new SmtpAuth();
auth.setAccount(user,password);
//创建一个Session对象
Session mailSession = Session.getDefaultInstance(props,auth);
mailSession.setDebug(true);
//创建一个Message对象
Message message=new MimeMessage(mailSession);
//指定发件人邮箱
message.setFrom(new InternetAddress(from));
//指定收件人邮箱
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
//指定邮件主题
message.setSubject(subject);
//指定邮件内容
message.setText(content);
//指定邮件发送日期
message.setSentDate(new Date());
//指定邮件优先级 1:紧急 3:普通 5:缓慢
message.setHeader("X-Priority","1");
message.saveChanges();
//创建一个Transport对象
Transport transport = mailSession.getTransport("smtp");
//连接SMTP服务器
transport.connect(SMTPHost, user, password);
//发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
//定义一个SMTP授权验证类
static class SmtpAuth extends Authenticator{
String user,password;
//设置帐号信息
void setAccount(String user,String password){
this.user = user;
this.password = password;
}
//取得PasswordAuthentication对象
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user,password);
}
}
public void setContent(String content) {
try{
//解决内容的中文问题
content = new String(content.getBytes("ISO8859-1"),"gb2312");
}catch(Exception ex){
ex.printStackTrace();
}
this.content = content;
}
public void setSubject(String subject) {
try{
//解决标题的中文问题
subject = new String(subject.getBytes("ISO8859-1"),"gb2312");
}catch(Exception ex){
ex.printStackTrace();
}
this.subject = subject;
}
//省略部分getset方法
}
注意 要开启发送方邮箱服务器的pop/smtp服务
(在qq邮箱中 设置如下 邮箱设置--账户)
至于带附件的邮件如何发送 大家可参考
<<精通Java Web整合开发(JSP+AJAX+Struts+Hibernate)>>(第2版)
源码下载地址:
http://download.csdn.net/detail/dlf123321/7882929
聊聊javaMail的更多相关文章
- ActiveMQ安装配置及实例
本文可作为吴水成老师,dubbo课程第21节的学习笔记. ActiveMQ的介绍及功能 参考百度 ActiveMQ的下载 https://activemq.apache.org/activemq-51 ...
- 聊聊Unity项目管理的那些事:Git-flow和Unity
0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...
- Mono为何能跨平台?聊聊CIL(MSIL)
前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇.到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在.所以,作为一个对Unity3D跨平台能力 ...
- javaMail
JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. javaMai ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- fir.im Weekly - 聊聊 Google 开发者大会
中国互联网的三大错觉:索尼倒闭,诺基亚崛起,谷歌重返中国.12月8日,2016 Google 开发者大会正式发布了Google Developers 中国网站 ,包含了Android Develope ...
- 聊聊asp.net中Web Api的使用
扯淡 随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式.这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大 ...
- 应用层之E-mail服务及javaMail邮件发送的知识总结
关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...
- 没有神话,聊聊decimal的“障眼法”
0x00 前言 在上一篇文章<妥协与取舍,解构C#中的小数运算>的留言区域有很多朋友都不约而同的说道了C#中的decimal类型.事实上之前的那篇文章的立意主要在于聊聊使用二进制的计算机是 ...
随机推荐
- SQL实例整理
本文适合将w3school的SQL教程(http://www.w3school.com.cn/sql/sql_create_table.asp)都基本看过一遍的猿友阅读. 说说博主的情况吧.毕业找工作 ...
- 计算机网络之IP协议族
网际协议IP 与IP协议配套使用的还有三个协议: 地址解析协议 ARP (Address Resolution Protocol) 网际控制报文协议 ICMP (Internet Control ...
- MongoDB实用教程
---------------------------------------------------------------------------------------------------- ...
- Spark:聚类算法之LDA主题模型算法
http://blog.csdn.net/pipisorry/article/details/52912179 Spark上实现LDA原理 LDA主题模型算法 [主题模型TopicModel:隐含狄利 ...
- Tomcat如何实现Comet
Comet模式是一种服务器端推技术,它的核心思想提供一种能让当服务器端往客户端发送数据的方式.Comet模式为什么会出现?刚开始人们在客户端通过不断自动刷新整个页面来更新数据,后来觉得体验不好又使用了 ...
- Angular2入坑指南
序 对后端开发来说,前端是神秘的,眼花缭乱的技术,繁多的框架,出名的不出名的好几百种,看是"繁荣",其实显得杂乱无章,但是我们在做开发的时候,技术选型还是主流的那么几个:浅析ang ...
- Linux 高性能服务器编程——I/O复用的高级应用
高级应用一:非阻塞connect connect系统调用的man手册中有如下的一段内容: EINPROGRESS The socket is non-blocking and the connecti ...
- OpenCV:Mat元素访问方法、性能、代码复杂度以及安全性分析
欢迎转载,尊重原创,所以转载请注明出处: http://blog.csdn.net/bendanban/article/details/30527785 本文讲述了OpenCV中几种访问矩阵元素的方法 ...
- Android简易实战教程--第十九话《手把手教您监听EditText文本变化,实现抖动和震动的效果》
昨晚写博客太仓促,代码结构有问题,早上测试发现没法监听文本变化!今日更改一下.真心见谅啦,哈哈!主活动的代码已经改好了,看截图这次的确实现了文本监听变化情况. 监听文本输入情况,仅仅限于土司略显low ...
- API创建员工联系人
DECLARE ln_contact_rel_id PER_CONTACT_RELATIONSHIPS.CONTACT_RELATIONSHIP_ID%TYPE; ln_ctr_object_ver_ ...