下载后解压,将mail.jar和activation.jar放到project里的lib文件夹中,为其配置环境变量,或在myEclipse里的"Java Build Path"中将其添加到"Libraries"。

project里有三个类:入口类(TestJavaMail)、邮件信息类(MailBean)和发送邮件类(SendMail)

MailBean.java

packagetest3;

importjava.util.Vector;

publicclassMailBean{

privateString to;//收件人privateString from;//发件人privateString host;//SMTP主机privateString username;//发件人的用户名privateString password;//发件人的密码privateString subject;//邮件主题privateString content;//邮件正文Vectorfile;//多个附件privateString filename;//附件的文件名publicString getTo(){

returnto;

    }

publicvoidsetTo(String to){

this.to=to;

    }

publicString getFrom(){

returnfrom;

    }

publicvoidsetFrom(String from){

this.from=from;

    }

publicString getHost(){

returnhost;

    }

publicvoidsetHost(String host){

this.host=host;

    }

publicString getUsername(){

returnusername;

    }

publicvoidsetUsername(String username){

this.username=username;

    }

publicString getPassword(){

returnpassword;

    }

publicvoidsetPassword(String password){

this.password=password;

    }

publicString getSubject(){

returnsubject;

    }

publicvoidsetSubject(String subject){

this.subject=subject;

    }

publicString getContent(){

returncontent;

    }

publicvoidsetContent(String content){

this.content=content;

    }

publicString getFilename(){

returnfilename;

    }

publicvoidsetFilename(String filename){

this.filename=filename;

    }

publicVectorgetFile(){

returnfile;

    }

publicvoidattachFile(String fileName){

if(file==null)

            file=newVector();

        file.addElement(fileName);

    }}

SendMail.java

packagetest3;

importjava.util.Date;

importjava.util.Enumeration;

importjava.util.Properties;

importjava.util.Vector;

importjavax.activation.DataHandler;

importjavax.activation.FileDataSource;

importjavax.mail.Authenticator;

importjavax.mail.Message;

importjavax.mail.MessagingException;

importjavax.mail.Multipart;

importjavax.mail.PasswordAuthentication;

importjavax.mail.Session;

importjavax.mail.Transport;

importjavax.mail.internet.InternetAddress;

importjavax.mail.internet.MimeBodyPart;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeMultipart;

importjavax.mail.internet.MimeUtility;

publicclassSendMail{

publicString toChinese(String text){

try{

            text=MimeUtility.encodeText(newString(text.getBytes(),"GB2312"),"GB2312","B");

        }catch(Exception e){

            e.printStackTrace();

        }returntext;

    }

publicbooleansendMail(MailBean mb){

        String host=mb.getHost();

finalString username=mb.getUsername();

finalString password=mb.getPassword();

        String from=mb.getFrom();

        String to=mb.getTo();

        String subject=mb.getSubject();

        String content=mb.getContent();

        String fileName=mb.getFilename();

        Vectorfile=mb.getFile();

        Properties props=System.getProperties();

        props.put("mail.smtp.host", host);//设置SMTP的主机props.put("mail.smtp.auth","true");//需要经过验证        Session session=Session.getInstance(props,newAuthenticator(){

publicPasswordAuthentication getPasswordAuthentication(){

returnnewPasswordAuthentication(username, password);

            }        });

try{

            MimeMessage msg=newMimeMessage(session);

            msg.setFrom(newInternetAddress(from));

            InternetAddress[] address={newInternetAddress(to)};

            msg.setRecipients(Message.RecipientType.TO, address);

            msg.setSubject(toChinese(subject));

            Multipart mp=newMimeMultipart();

            MimeBodyPart mbpContent=newMimeBodyPart();

            mbpContent.setText(content);

            mp.addBodyPart(mbpContent);

/*往邮件中添加附件*/            Enumerationefile=file.elements();

while(efile.hasMoreElements()){

                MimeBodyPart mbpFile=newMimeBodyPart();

                fileName=efile.nextElement().toString();

                FileDataSource fds=newFileDataSource(fileName);

                mbpFile.setDataHandler(newDataHandler(fds));

                mbpFile.setFileName(toChinese(fds.getName()));

                mp.addBodyPart(mbpFile);

            }

            msg.setContent(mp);

            msg.setSentDate(newDate());

            Transport.send(msg);

        }catch(MessagingException me){

            me.printStackTrace();

returnfalse;

        }returntrue;

    }

}

TestJavaMail.java

packagetest3;

publicclassTestJavaMail{

publicstaticvoidmain(String[] args){

        MailBean mb=newMailBean();

        mb.setHost("smtp.163.com");//设置SMTP主机(163),若用126,则设为:smtp.126.commb.setUsername("linyiteng1220");//设置发件人邮箱的用户名mb.setPassword("******");//设置发件人邮箱的密码,需将*号改成正确的密码mb.setFrom("linyiteng1220@163.com");//设置发件人的邮箱mb.setTo("linyiteng1220@126.com");//设置收件人的邮箱mb.setSubject("测试_JavaMail");//设置邮件的主题mb.setContent("本邮件中包含三个附件,请检查!");//设置邮件的正文        mb.attachFile("E:/工作报告(林乙腾).doc");//往邮件中添加附件mb.attachFile("E:/test.txt");

        mb.attachFile("E:/test.xls");

        SendMail sm=newSendMail();

        System.out.println("正在发送邮件...");

if(sm.sendMail(mb))//发送邮件System.out.println("发送成功!");

else            System.out.println("发送失败!");

    }

}

如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

解决方法:移除myEclipse自带的EE包

但你可能还需要用到EE包里的servlet相关类,那可以从Tomcat的lib文件夹中复制servlet-api.jar到project中,用它来代替EE包,一切OK!

另外,个人测试时发现无法通过新注册的网易邮箱来发邮件,以前旧的就没有问题,不知道是什么原因。

如果要通过gmail发邮件的话,请在代码Properties props = System.getProperties();后再添加以下两行代码:

props.put("mail.transport.protocol", "smtp");

props.put("mail.smtp.starttls.enable","true");

搞定!

如果存在缺漏和问题,请大家指正!

java smtp.126.com_Java采用SMTP协议发送邮件 | 学步园相关推荐

  1. java smtp.126.com_Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程

    转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送 ...

  2. java oval_Java对象校验框架Oval怎么使用 | 学步园

    OVal是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs进行设定.可以使用纯Java语言.JavaScript.Groovy.BeanShell等进 ...

  3. java有关地址的讲解_Java迭代器讲解 | 学步园

    迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...

  4. java 正则 栈溢出_关于Java正则引起的StackOverFlowError问题以及解决方案 | 学步园...

    java 正则异常 java.lang.StackOverflowError: 在使用正则表达式的时候,底层是通过迭代方式执行的,每一层的迭代都会在栈线程的大小中占一定内存,如果迭代的层次很多,就会报 ...

  5. supermap iserver java 6r许可_SuperMap iserver Java 6R 在 linux 上安装和配置 | 学步园

    一.安装JDK 1.进入到放置JDK目录下 输入命令:./jdk-6u14-linux-i586.bin 开始安装jdk ,安装的时候会让你输入yes (如果提示你权限不够的话 可以输入命令:chmo ...

  6. java md5加密解密_java MD5加密解密 | 学步园

    package com.md5; /** * @author 作者 E-mail: chenshaohua2012@126.com * @version 创建时间:2012-11-6 下午3:29:4 ...

  7. java狗叫_java学习(8) | 学步园

    本讲内容:成员变量.方法.方法的重载.构造函数 一.用程序讲解小白的故事 小白是一条狗,它心情好的时候会恭喜人发财,它心情差的时候会对路人撒野,吓得路人落荒而逃.下面我们用面向对象的方式用程序讲述一下 ...

  8. java console清屏_JAVA 控制台清屏 | 学步园

    看到网上有人讨论Java如何实现对控制台清屏,看到的内容不是很理想.所以把这些内容总结一下. 直观一点,先看下代码吧 import static java.lang.System.out; /** * ...

  9. java bean命名规范_JavaBean 成员命名规范 | 学步园

    在eclipse中自动生成setters()和getters() User.java private boolean active ; //getter() public boolean isActi ...

最新文章

  1. 脑电分析系列[MNE-Python-1]| MNE-Python详细安装与使用(更新)
  2. 为什么 Kafka 如此之快?
  3. 摄像头poe供电原理_poe供电摄像头有哪些优缺点
  4. Android性能优化之内存篇
  5. linux在多个目录跳转,如何做到在多个目录直接游刃有余的进行切换 -- linux 下的目录切换...
  6. winrar 去广告_解压缩工具之WinRAR下载安装教程
  7. python天气查询_Python学习笔记——天气查询代码
  8. springboot实战pdf_Java程序员中秋节福利发送:Spring boot+Redis实战文档「PDF」
  9. java导出excel 客户端_java如何将导出的excel下载到客户端
  10. 基于HTTP构建YUM网络源实战
  11. ABAP中的枚举对象
  12. 笑哭了!日本网友求助如何卸载360浏览器,过程堪比“ 拆弹 ”...
  13. 全民健身下的体育消费,是怎么升级的?
  14. 【三维地图】开发攻略 —— 详解“GeoJSON”技术和应用场景
  15. 原生滑动选择器 html,html选择器
  16. 企业级负载均衡LVS集群——DR模式下的(加权)轮询调度器、DR模式下的健康检测(ldirectord)
  17. MySQL数据存储空间
  18. [P14-v19]自己做一台 Hifi 耳放,全分立的!
  19. 电脑连不上手机热点了
  20. C++_enhance-Record11—异常的层次结构(继承在异常中的应用)

热门文章

  1. 内核tty框架_串口_tty_shell的关系
  2. Ubuntu设置扁平化风格桌面
  3. 定时执行mysql数据库任务方案
  4. nginx的access.log文件详解
  5. 【CO2二氧化碳传感器】senseair S8 LP
  6. MSP430-流水灯和key
  7. 微信小程序学习(五)
  8. 初中晨读必看古诗名句
  9. 分享几个DJ网站音乐下载站
  10. 网线的制作及交换机的基本配置