java基础-javaMail

//EmailAuthenticator类

import javax.mail.Authenticator;  
import javax.mail.PasswordAuthentication;  
 
public class EmailAuthenticator extends Authenticator  
{  
    private String username;  
    private String userpsd;  
    public EmailAuthenticator(String username, String userpsd)  
    {  
        this.username = username;  
        this.userpsd = userpsd;  
    }  
    public String getUsername()  
    {  
        return username;  
    }  
    public void setUsername(String username)  
    {  
        this.username = username;  
    }  
    public String getUserpsd()  
    {  
        return userpsd;  
    }  
    public void setUserpsd(String userpsd)  
    {  
        this.userpsd = userpsd;  
    }  
    @Override  
    protected PasswordAuthentication getPasswordAuthentication()  
    {  
        return super.getPasswordAuthentication();  
    }  
}

//main方法测试

import james.EmailAuthenticator;

import java.util.Properties;  
import javax.mail.*;  
import javax.mail.internet.InternetAddress;  
import javax.mail.internet.MimeMessage;

public class Test {
  public static void main(String[] args)throws Exception {
      //这是邮件服务器地址  
      String smtp = "smtp.163.com";  
      //用户邮箱地址,用自己的邮箱啊  
      String from = "[email protected]";  
      //要发送的邮箱对方邮箱 
      String to = "[email protected]";  
      //构造用户身份验证验证对象,参数为用户名和口令  
      EmailAuthenticator auth = new EmailAuthenticator("test","password");  
      //获取系统属性对象  
      Properties props = System.getProperties();  
      //设置邮件服务器和是否身份验证  
      props.put("mail.smtp.host", smtp);  
      /*  如果写成这样 props.put("mail.smtp.auth", true);
       *  会爆 com.sun.mail.smtp.SMTPSendFailedException:异常
       *  应该写成 props.put("mail.smtp.auth", "true");
       * */  
      props.put("mail.smtp.auth", "true");  
      //获得Session对象  
      Session session = Session.getInstance(props,(Authenticator)auth);  
      //以session作为参数建立MimeMessage对象  
      //这里Mime是支持该协议的类,用来描述邮件的内容  
      MimeMessage msg = new MimeMessage(session);  
      msg.setFrom(new InternetAddress(from));  
      msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to));  
      msg.setSubject("标题");  
      String s = "内容";  
      msg.setText(s);  
      //设置好MimeMessage后,从Session中建立Transport对象  
      //Transport对象用于发送邮件信息,getTransport的参数  
      //表明发送邮件使用的协议。  
      Transport transport = session.getTransport("smtp");  
      transport.connect(smtp,"[email protected]","password");  
      transport.sendMessage(msg,msg.getAllRecipients());  
      transport.close();  
      System.out.println("邮件发送成功");  
}
}

如果是myeclipse 的话需要 mail.jar 包

在使用javamail发送邮件的时候,如果出现“java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream”这样的错误,
javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是MyEclipse中已经自带了。但是里面的方法与最新JDK的javamail包不一致导致的错误
解决方法:
进入MyEclipse的安装目录下(这是我机器上的MyEclipse安装目录,也许你的不同)
C:\Users\Administrator\MyEclipse 6.0\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710\data\libraryset\EE_5
这个目录下,可以看到javaee.jar包,双击使用压缩软件打开把这个包文件,然后进到javax文件夹中,删除mail目录和activation目录,也可能是jar包。
删掉之后,在运行代码,就不会出现错误了,当然不要把整个javaee.jar包给删除了,他里面还有其它很多功能包,比如servlet,如果有引用 其它功能,还是会报错的.
最后添加最新的mail.jar和activation.jar就OK了

时间: 2024-11-05 19:37:13

java基础-javaMail的相关文章

Java基础知识【上】(转载)

http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没有考虑到会坚持往后边写,这次应该是更新该内容.而且很讨厌写基础的东西,内容比较琐碎,而且整理起来总会很多,有可能会打散成两个章节,但是我不保证,有可能一个章节就写完了,所以有时候希望基础的很多内容还是读者自己去看看,我基本保证把基础的内容全部都写出来,见谅.这一个章节写了过后我会把前边那个关于基础类

Java基础教程免费分享

这是我自己早前听课时整理的Java全套知识,适用于初学者,也可以适用于中级进阶的人,你们可以下载,我认为是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的人!在这里我免费的分享出来供大家使用! 在这个平台真的可以学习到不少的东西!有很多的人都在无私的奉献着他们的智慧与知识. 希望对于Java学习者有所帮助! 如果你觉得好的话,就在评论出给予回应,谢谢. 首先建立好开发环境非常重要,工欲善其事,必先利其器.做任何开发,首先就是要把这个环境准备好,之后就可以去

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机

第3篇-JAVA基础

第3篇-JAVA基础 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程 初学心得: 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ] 上篇回顾 上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义 本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!! 1.JAVA基础语法格式 JAVA采用unicode编码 1

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

java基础 计算今天距本月最后一天还剩多少天

Calendar  c = new GregorianCalendar();   //GregorianCalendar 是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统. GredorianCalendar 是一种混合日历,可由调用者通过调用setGregorianChange()来更改起始日期. Calendar c = new  Calendar.getInstance(TimeZone.getTimeZone("GMT+08:OO"));  //

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

JAVA基础——重新认识String字符串

深入剖析Java之String字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象有三种方法 String s1="我是字符串1"; String s2=new String();//创建一个空的字符串对象 String s3=new String("我是字符串2&q