聊聊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类型.事实上之前的那篇文章的立意主要在于聊聊使用二进制的计算机是 ...
随机推荐
- Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 元旦假期里,闲的无事,看到美团加载数据的动画,就突想写个Demo把动画知识集成一下.后来想了想,还是直接用一个Demo来把所有动画知识 ...
- springMVC源码分析--RequestParamMethodArgumentResolver参数解析器(三)
之前两篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)和springMVC源码解析--HandlerMethodArgumentResol ...
- Android源码解析——Toast
简介 Toast是一种向用户快速展示少量信息的视图.当它显示时,它会浮在整个应用层的上面,并且不会获取到焦点.它的设计思想是能够向用户展示些信息,但又能尽量不显得唐突.本篇我们来研读一下Toast的源 ...
- sublime text 2 解决错误 [Decode error - output not utf-8]
以win 10 为例, 找到文件C:\Users\xxzx\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build 添加 ...
- 改善database schema
本文地址:http://blog.csdn.net/sushengmiyan/article/details/50422102 本文作者:苏生米沿 Hibernate 读取你java模型类的映射元数据 ...
- ant编译mysql驱动
修改驱动源码后需要重新编译构建,由于mysql编译需要两个jdk版本且还需要hibernate4和junit,这里记录下. 安装ant. 配置两个jdk,5和8.并修改build.xml配置,如下: ...
- Unity3d导出场景地图寻路
Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域. this.renderer.enabled = false;所有这些盒子设为Navig ...
- Linux 高性能服务器编程——高级I/O函数
重定向dup和dup2函数 #include <unistd.h> int dup(int file_descriptor); int dup2(int file_descriptor_o ...
- Android使用shape制作圆形控件及添加弹跳动画
--------本来为作者原创,未经同意禁止转载 前言:我们在很多时候都需要在res/drawable文件夹下创建相应的xml文件来为控件添加一些样式效果,比如按钮按下时的按钮样式变化.或者指定按钮的 ...
- Dynamics CRM 插件注册时报Assembly must be registered in isolation的解决方法
在插件注册的时候经常会遇到"Assembly must be registered in isolation"的问题导致无法注册,之前经常会被同事或者朋友问到这个问题,遇到这个问题 ...