仓酷云
标题:
来看利用JavaMail发送邮件的Java类
[打印本页]
作者:
精灵巫婆
时间:
2015-1-18 10:59
标题:
来看利用JavaMail发送邮件的Java类
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
利用JavaMail发送邮件必要用到mail.jar和activtion.jar两个包。
该类完成了较完全的邮件发送功效,包含以HTML格局发送,增加附件和抄送人。上面是详细的代码:
Mail.java:
packagecn.cgw.util.mail;
importjava.util.Properties;
importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
publicclassMail{
privateMimeMessagemimeMsg;//MIME邮件对象
privateSessionsession;//邮件会话对象
privatePropertiesprops;//体系属性
privatebooleanneedAuth=false;//smtp是不是必要认证
//smtp认证用户名和暗码
privateStringusername;
privateStringpassword;
privateMultipartmp;//Multipart对象,邮件内容,题目,附件等外容均增加到个中后再天生MimeMessage对象
/**
*Constructor
*@paramsmtp邮件发送服务器
*/
publicMail(Stringsmtp){
setSmtpHost(smtp);
createMimeMessage();
}
/**
*设置邮件发送服务器
*@paramhostNameString
*/
publicvoidsetSmtpHost(StringhostName){
System.out.println("设置体系属性:mail.smtp.host="+hostName);
if(props==null)
props=System.getProperties();//取得体系属性对象
props.put("mail.smtp.host",hostName);//设置SMTP主机
}
/**
*创立MIME邮件对象
*@return
*/
publicbooleancreateMimeMessage()
{
try{
System.out.println("筹办猎取邮件会话对象!");
session=Session.getDefaultInstance(props,null);//取得邮件会话对象
}
catch(Exceptione){
System.err.println("猎取邮件会话对象时产生毛病!"+e);
returnfalse;
}
System.out.println("筹办创立MIME邮件对象!");
try{
mimeMsg=newMimeMessage(session);//创立MIME邮件对象
mp=newMimeMultipart();
returntrue;
}catch(Exceptione){
System.err.println("创立MIME邮件对象失利!"+e);
returnfalse;
}
}
/**
*设置SMTP是不是必要考证
*@paramneed
*/
publicvoidsetNeedAuth(booleanneed){
System.out.println("设置smtp身份认证:mail.smtp.auth="+need);
if(props==null)props=System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
}
/**
*设置用户名和暗码
*@paramname
*@parampass
*/
publicvoidsetNamePass(Stringname,Stringpass){
username=name;
password=pass;
}
/**
*设置邮件主题
*@parammailSubject
*@return
*/
publicbooleansetSubject(StringmailSubject){
System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject);
returntrue;
}
catch(Exceptione){
System.err.println("设置邮件主题产生毛病!");
returnfalse;
}
}
/**
*设置邮件注释
*@parammailBodyString
*/
publicbooleansetBody(StringmailBody){
try{
BodyPartbp=newMimeBodyPart();
bp.setContent(""+mailBody,"text/html;charset=GBK");
mp.addBodyPart(bp);
returntrue;
}catch(Exceptione){
System.err.println("设置邮件注释时产生毛病!"+e);
returnfalse;
}
}
/**
*增加附件
*@paramfilenameString
*/
publicbooleanaddFileAffix(Stringfilename){
System.out.println("增添邮件附件:"+filename);
try{
BodyPartbp=newMimeBodyPart();
FileDataSourcefileds=newFileDataSource(filename);
bp.setDataHandler(newDataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
returntrue;
}catch(Exceptione){
System.err.println("增添邮件附件:"+filename+"产生毛病!"+e);
returnfalse;
}
}
/**
*设置发信人
*检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
*@paramfromString
*/
publicbooleansetFrom(Stringfrom){
System.out.println("设置发信人!");
try{
mimeMsg.setFrom(newInternetAddress(from));//设置发信人
returntrue;
}catch(Exceptione){
returnfalse;
}
}
/**
*设置收信人
*@paramtoString
*/
publicbooleansetTo(Stringto){
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
returntrue;
}catch(Exceptione){
returnfalse;
}
}
/**
*设置抄送人
*@paramcopytoString
*/
publicbooleansetCopyTo(Stringcopyto)
{
if(copyto==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}
/**
*发送邮件
*/
publicbooleansendOut()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
SessionmailSession=Session.getInstance(props,null);
Transporttransport=mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
//transport.send(mimeMsg);
System.out.println("发送邮件乐成!");
transport.close();
returntrue;
}catch(Exceptione){
System.err.println("邮件发送失利!"+e);
returnfalse;
}
}
/**
*挪用sendOut办法完成邮件发送
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//必要考证
if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);
if(!theMail.sendOut())returnfalse;
returntrue;
}
/**
*挪用sendOut办法完成邮件发送,带抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramcopyto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringcopyto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//必要考证
if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(copyto))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);
if(!theMail.sendOut())returnfalse;
returntrue;
}
/**
*挪用sendOut办法完成邮件发送,带附件
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename附件路径
*@return
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//必要考证
if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);
if(!theMail.sendOut())returnfalse;
returntrue;
}
/**
*挪用sendOut办法完成邮件发送,带附件和抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramcopyto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename
*@return
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringcopyto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//必要考证
if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(copyto))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);
if(!theMail.sendOut())returnfalse;
returntrue;
}
}
复制代码
测试代码:
publicstaticvoidmain(String[]args){
Stringsmtp="SMTP服务器";
Stringfrom="发信人";
Stringto="收信人";
Stringcopyto="抄送人";
Stringsubject="邮件主题";
Stringcontent="邮件内容";
Stringusername="用户名";
Stringpassword="暗码";
Stringfilename="附件路径,如:F:条记<a>struts2</a>与mvc.txt";
Mail.sendAndCc(smtp,from,to,copyto,subject,content,username,password,filename);
}
复制代码
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
作者:
愤怒的大鸟
时间:
2015-1-20 12:31
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者:
活着的死人
时间:
2015-1-29 07:08
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
再现理想
时间:
2015-1-31 12:34
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
柔情似水
时间:
2015-2-7 01:46
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
冷月葬花魂
时间:
2015-2-19 13:47
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
灵魂腐蚀
时间:
2015-3-6 14:47
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
仓酷云
时间:
2015-3-13 02:09
是一种将安全性(Security)列为第一优先考虑的语言
作者:
海妖
时间:
2015-3-20 09:57
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2