java 发送邮件

首先需要加入以下jar包


然后运行代码

package com.liang.tiezi;


import java.sql.Date;
import java.util.Properties;


import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;




public class SendMail {

public static void main(String[] args) {
SendMail.sendAccountActivateEmail();
}

    /** 
     * 
     */  
    public static void sendAccountActivateEmail() {  
        Session session = getSession();  
        MimeMessage message = new MimeMessage(session);  
        try {  
            message.setSubject("帐户激活邮件");  //邮件标题
            message.setSentDate(new Date(0)); //时间 
            message.setFrom(new InternetAddress("1135409377@qq.com"));  //发件人邮箱
            message.setRecipient(RecipientType.TO, new InternetAddress("652791205@qq.com")); //收件人信息  
//            message.setContent("<a href='http://localhost:9876'><font>欢迎您注册语录社,点击此链接进行激活。</font></a>","text/html;charset=utf-8");  
            message.setContent("hello gril","text/html;charset=utf-8");//邮件内容,可以使超链接,可以使纯文本
            //发送邮件  
            Transport.send(message);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
      
    public static Session getSession() {  
        Properties props = new Properties();  
        props.setProperty("mail.transport.protocol", "smtp");  
        props.setProperty("mail.smtp.host", "smtp.qq.com");
        props.put("mail.smtp.localhost", "localHostAddress");
        props.setProperty("mail.smtp.port", "25");  
        props.setProperty("mail.smtp.auth", "true");  
//        Session session = Session.getDefaultInstance(props);
        Session session = Session.getInstance(props, new Authenticator() {  
            @Override  
            protected PasswordAuthentication getPasswordAuthentication() {  
                String password = "liangpengxdnovo";//发件人邮箱密码  
//                InputStream is = EmailUtils.class.getResourceAsStream("password.dat");  
//                byte[] b = new byte[1024];  
//                try {  
//                    int len = is.read(b);  
//                    password = new String(b,0,len);  
//                } catch (IOException e) {  
//                    e.printStackTrace();  
//                }  
                return new PasswordAuthentication("1135409377@qq.com", password);  //发件人邮箱,发件人邮箱密码。
            }  
              
        });  
        return session;  
    }  
}

这时会报错,提示

java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法 摘自此链接

在编写邮件发送相关程序时,会报错!

 

主要原因是 

 

javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。
废话不多说下面是解决方法
进到

X:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5

这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下)

删掉之后运行下面的代码,经行简单的修改以后就可以实现接收邮件的功能了!我已经测试过完全可行。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值