java web邮件收发

1.网上方法要导入两个包

mail.jar&activation.jar

package com.zjh.shopping.util;

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

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;  

public class JavaMailSendUtil {  

    public  void sendmail(String subject, String from, String[] to,
            String text, String[] filenames, String mimeType) {
        try {
            Properties props = new Properties();  

            String smtp = "smtp.163.com"; // 设置发送邮件所用到的smtp
            String servername = "*******";  //邮箱账号名
            String serverpaswd = "******";  //邮箱密码

            javax.mail.Session mailSession = null; // 邮件会话对象
            javax.mail.internet.MimeMessage mimeMsg = null; // MIME 邮件对象  

            props = java.lang.System.getProperties(); // 获得系统属性对象
            props.put("mail.smtp.host", smtp); // 设置SMTP主机
            props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证
            // 到服务器验证发送的用户名和密码是否正确
            SmtpAuthenticator myEmailAuther = new SmtpAuthenticator(servername,
                    serverpaswd);
            // 设置邮件会话 注意这里将认证信息放进了Session的创建参数里
            mailSession = javax.mail.Session.getInstance(props,
                    (Authenticator) myEmailAuther);
            // 设置传输协议
            javax.mail.Transport transport = mailSession.getTransport("smtp");
           // 设置from、to等信息
           mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
           if (null != from && !"".equals(from)) {
               InternetAddress sentFrom = new InternetAddress(from);
               mimeMsg.setFrom(sentFrom); // 设置发送人地址
           }  

           InternetAddress[] sendTo = new InternetAddress[to.length];
           for (int i = 0; i < to.length; i++) {
               System.out.println("发送到:" + to[i]);
               sendTo[i] = new InternetAddress(to[i]);
           }  

           mimeMsg.setRecipients(
                   javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);
           mimeMsg.setSubject(subject, "gb2312");  

           MimeBodyPart messageBodyPart1 = new MimeBodyPart();
           // messageBodyPart.setText(UnicodeToChinese(text));
           messageBodyPart1.setContent(text, mimeType);  

           // 附件传输格式
           Multipart multipart = new MimeMultipart();
           multipart.addBodyPart(messageBodyPart1);  

           for (int i = 0; i < filenames.length; i++) {
               MimeBodyPart messageBodyPart2 = new MimeBodyPart();  

               String filename = filenames[i].split(";")[0];
               String displayname = filenames[i].split(";")[1];
               // 得到数据源
               FileDataSource fds = new FileDataSource(filename);
               // BodyPart添加附件本身
               messageBodyPart2.setDataHandler(new DataHandler(fds));
               // BodyPart添加附件文件名
               messageBodyPart2.setFileName(MimeUtility
                       .encodeText(displayname));
               multipart.addBodyPart(messageBodyPart2);
           }
           mimeMsg.setContent(multipart);
           // 设置信件头的发送日期
           mimeMsg.setSentDate(new Date());
           mimeMsg.saveChanges();
           // 发送邮件
           transport.send(mimeMsg);
           transport.close();
           System.out.println("发送到成功!!!");
       } catch (Exception e) {
           e.printStackTrace();
       }
   }  

   public static void main(String[] args) throws Exception {
       String title = "测试邮件";// 所发送邮件的标题
       String from = "************@163.com";// 从那里发送
       String sendTo[] = { "********@qq.com" };// 发送到那里
       // 邮件的文本内容,可以包含html标记则显示为html页面
       String content = "test java send mail !!!!!!<br><a href="http://sjsky.javaeye.com/">My blog</a>";
     // 所包含的附件,及附件的重新命名
     String fileNames[] = { "d:\\test.jpg;test.jpg" };  

     JavaMailSendUtil test = new JavaMailSendUtil();
     try {
         // MailSender mailsender = new MailSender();
         test.sendmail(title, from, sendTo, content, fileNames,
                 "text/html;charset=gb2312");
     } catch (Exception ex) {
         ex.printStackTrace();
     }
 }  

 class SmtpAuthenticator extends Authenticator {
     String username = null;
     String password = null;  

     public SmtpAuthenticator(String username, String password) {
         super();
         this.username = username;
         this.password = password;
     }  

     public PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(this.username, this.password);
       }
   }
}  

2.自己用的

package com.gree.mail.mailsend;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;

public class Mailsend2 {

public static Session getSession() {
    Session session = null;

//      session = (Session)new InitialContext().lookup("MailSession");

      Properties props = new Properties();
      props.put("mail.smtp.host", "10.1.1.168");
      props.put("mail.smtp.auth", "false");
      session = Session.getDefaultInstance(props, null);

    return session;
}

public static void sendMessage(String from, String[] to, String[] cc, String subject, String content,
                                 String mimeType) throws javax.mail.MessagingException {

    Message message = new MimeMessage(getSession());
    if (!StringUtils.isEmpty(from)) {
      InternetAddress sentFrom = new InternetAddress(from);
      message.setFrom(sentFrom);
    }
    InternetAddress[] sendTo = new InternetAddress[to.length];
    for (int i = 0; i < to.length; i++) {
      sendTo[i] = new InternetAddress(to[i]+"@gree.com.cn");
    }
    if ( (cc.length > 0) && (cc[0] != null)) {
      InternetAddress[] copyTo = new InternetAddress[cc.length];
      for (int i = 0; i < cc.length; i++) {
        copyTo[i] = new InternetAddress(cc[i]+"@gree.com.cn");
      }
      message.setRecipients(Message.RecipientType.CC, copyTo);
    }
    message.setRecipients(Message.RecipientType.TO, sendTo);

    //System.out.println("发送人员:"+message.getRecipients(Message.RecipientType.TO));
    //System.out.println("抄送人员:"+message.getRecipients(Message.RecipientType.CC))

    message.setSubject(subject);
    message.setContent(content, mimeType);
    Transport.send(message);
 }

public void sendHTMLMessage(String[] to, String[] cc, String title, String content)throws MessagingException {

    try {
        sendMessage("SCBWEB", to, cc, title+"-模具管理系统信息", content, "text/html;Charset=gb2312");
    } catch (javax.mail.MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
         // System.out.println("2="+content);
}

public static void main(String[] args) {
    String [] to= new String[] {"180172"};
    String [] cc= new String[] {"180158"};
    String title="ceshi";
    String content="晚上小天请我们吃烤鱼,8号门对面,大概67点左右,等下下班别走开";
    try {
        Mailsend2.sendMessage("[email protected]", to, cc, title, content, "text/html;Charset=utf-8");
    } catch (javax.mail.MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}
    }

}

myeclipse中发送邮件出现Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

出现这个问题的原因是jar包版本不统一,解决方法如下:
我在项目导入了jar包

与myeclipse自带jar冲突了

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体操作:

进入myeclipse的安装目录:我安装的是myeclipse blue 8.5 具体路径如下

E:\development_tools\myeclipse_8.5\install_d\common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5

找到javaee.jar,打开后删除mail文件夹即可(需要先关闭运行着的myeclipse,否则无法删除)

时间: 2024-11-09 00:42:48

java web邮件收发的相关文章

java web环境搭建

1. 根据自己电脑版本下载对应的tomcat和eclipse安装包 2. 在eclipse中找到preferences 找到 runtime environments 找到add 3. 选择tomcat的版本 next 4. 选择browse  tomcat解压的地方选择对应的版本,最后finsih 5. 数据库方面 只需要下载Mysql的安装包即可. 最后完成了java web环境的搭建.

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

[Java Web]2\Web开发中的一些架构

1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸如事务.安全等操作问题,所以现在开发往往要通过中间件进行过渡,即,程序运行在中间件上,并通过中间件进行操作系统的操作,而具体一些相关的处理,如事务.安全等完全由中间件来负责,这样程序员只要完成具体的功能开发即可. 2.Java EE架构: Java EE 是在 Java SE 的基础上构建的,.NE

在java web项目中集成webservice

公司要求在项目中加入webservice服务,因为项目中使用了spring框架,所以在这里使用与spring兼容性较好的cxf来实现 cxf所需jar包 spring的jar包就不贴了 一:创建webservice服务器 1)创建一个服务接口 package com.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IHelloWorld { public S

Java Web项目中缺少Java EE 6 Libraries怎么添加

具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build Path-->Java Build Path" 2.单击"Add Library..." 3.选择"User Library",单击"Next" 4.单击"User Libraries...",选择需要的Java EE 6 Libraries Java Web项目中缺少Java EE 6

java web 程序---购物车选商品,购买,付款

虚函数使用的时机 为什么虚函数不总是适用? 1. 虚函数有事会带来很大的消耗: 2. 虚函数不总是提供所需的行为: 3. 当我们不考虑继承当前类时,不必使用虚函数. 必须使用虚函数的情况: 1. 当你想删除一个表面上指向基类对象,实际却是指向派生类对象的指针,就需要虚析构函数. java web 程序---购物车选商品,购买,付款,布布扣,bubuko.com

使用Struts框架的Java Web项目中的两个Session的区别和常见的Session取值为空的错误

我的百度知道回答,感觉这个知识很有意义,专门贴出来. 不过还有待验证的地方,就是 ActionContext.getContext().getSession("name", "Tom"); //如果在JSP中通过 EL 或者 Struts2 标签怎么显示? 以下是回答正文. 很多初学Java Web的同学因为使用 Strut2框架而分不清两个 Session的区别. 1.   JSP/Servlety有个原生的 session 对象,这是9大内置对象中的一个,书上写

java Web(2)

Servlet与web容器的配合: 1)客户端向Web服务器发起一个HTTP请求. 2)HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理.如果请求的是Java Web组件(Servlet或者JSP),则移交给Web容器.Web容器可以在主               机的同一个进程.不同的进程或其他的Web服务主机的进程中启动. 3)Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把request对象.response对象传给它. 4)Ser

java web 数据库开发1

一个完整的数据库部署架构通常由客户端和服务器端两部分组成.客户端封装数据库请求将其发送给服务器端,服务器端执行完毕将其及结果返回给服务器端. 以mysql为例 介绍java应用程序对数据库的访问 JDBC意义:应用程序通过调用统一接口实现对任意数据库的访问,为我们屏蔽了客户端与服务器端交互协议的实现细节. 对java而言,JDBC是一个类库,对数据库而言,JDBC是接口规范. 有了JDBC,应用程序变得更加简单,提高了程序开发的效率,使java web面向不同的数据库时,具有跨平台性,基于JDB