`
ningwang
  • 浏览: 8315 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java Mail 封装类

阅读更多

  完整的java mail例子.包括main测试方法。

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.activation.*;

import java.net.URL;
import javax.mail.internet.*;

public class MailManagerImpl {
  private String smtpAddr;
  private String mailUser;
  private String passwd;

        public MailManagerImpl() {
        }

        public MailManagerImpl(String smtpAddr, String mailUser, String passwd) {
                this.smtpAddr = smtpAddr;
                this.mailUser = mailUser;
                this.passwd = passwd;
        }

        public void sendMailWithoutProxyServer(String fromAddr, String [] recipientsAddr,
          String mailSubject, String htmlContent, String textContent 
        ) throws Exception {

          Properties props = new Properties();
          Session sendMailSession;
          Transport transport = null;
          InternetAddress [] mailDress;
          Message newMessage ;

          if (fromAddr == null || fromAddr.equals(""))
            throw new InvalidMailAddressException("fromAddr is null");

          if (recipientsAddr != null) {
            mailDress = new InternetAddress[recipientsAddr.length];

            for (int i = 0; i < recipientsAddr.length; i++) {
              mailDress[i] = new InternetAddress(recipientsAddr[i]);
            }
          }
          else
            throw new InvalidMailAddressException("toAddr is null");

          try {
//           System.getProperties().put( "proxySet", "true" );
//           System.getProperties().put( "proxyHost", "10.168.171.1" );
//           System.getProperties().put( "proxyPort", "80" );

            sendMailSession = Session.getInstance(props, null);
           
            sendMailSession.setDebug(true); //是否在控制台显示debug信息
            newMessage = new MimeMessage(sendMailSession);
            newMessage.setFrom(new InternetAddress(fromAddr));

            newMessage.setRecipients(Message.RecipientType.TO, mailDress);

            newMessage.setSubject(mailSubject);

            MimeMultipart multipart=new MimeMultipart();
            //BodyPart msgBodyPart=new MimeBodyPart();
           
            MimeBodyPart text = new MimeBodyPart();
            MimeBodyPart html = new MimeBodyPart();

            if( htmlContent!=null && htmlContent.length()>0 ) {
             html.setContent(htmlContent,"text/html; charset=UTF-8");
             multipart.addBodyPart(html);
            }
            if( textContent!=null && textContent.length()>0 ) {
             text.setText(textContent);
             multipart.addBodyPart(text);
            }
            //msgBodyPart.setContent(htmlContent,"text/html; charset=UTF-8");
           
            BodyPart embedImage=new MimeBodyPart();
            //multipart.addBodyPart(msgBodyPart);
            newMessage.setContent(multipart);
            newMessage.setSentDate(new Date());

            newMessage.saveChanges();

            transport = sendMailSession.getTransport("smtp");
            transport.connect(this.getSmtpAddr(), this.getMailUser(), this.getPasswd());
            transport.sendMessage(newMessage, newMessage.getAllRecipients());
          }
          catch (Exception e) {
            throw e;
          }
          finally {
            if (transport != null)
              transport.close();
          }
        }

        public void sendMailWithoutProxyServer(String fromAddr, String [] recipientsAddr,
          String mailSubject, String htmlContent, String textContent,
                String mailcode  
        ) throws Exception {

          Properties props = new Properties();
          Session sendMailSession;
          Transport transport = null;
          InternetAddress [] mailDress;
          Message newMessage ;

          if (fromAddr == null || fromAddr.equals(""))
            throw new InvalidMailAddressException("fromAddr is null");

          if (recipientsAddr != null) {
            mailDress = new InternetAddress[recipientsAddr.length];

            for (int i = 0; i < recipientsAddr.length; i++) {
              mailDress[i] = new InternetAddress(recipientsAddr[i]);
            }
          }
          else
            throw new InvalidMailAddressException("toAddr is null");

          try {
//           System.getProperties().put( "proxySet", "true" );
//           System.getProperties().put( "proxyHost", "10.168.171.1" );
//           System.getProperties().put( "proxyPort", "80" );

            sendMailSession = Session.getInstance(props, null);
           
            sendMailSession.setDebug(true); //是否在控制台显示debug信息
            newMessage = new MimeMessage(sendMailSession);
            newMessage.setFrom(new InternetAddress(fromAddr));

            newMessage.setRecipients(Message.RecipientType.TO, mailDress);

            newMessage.setSubject(mailSubject);

            MimeMultipart multipart=new MimeMultipart();
            //BodyPart msgBodyPart=new MimeBodyPart();
           
            MimeBodyPart text = new MimeBodyPart();
            MimeBodyPart html = new MimeBodyPart();

            if( htmlContent!=null && htmlContent.length()>0 ) {
             if (mailcode.equals("cn")){
               html.setContent(htmlContent,"text/html; charset=GBK");
             }else{
               html.setContent(htmlContent,"text/html; charset=UTF-8");
             }
             multipart.addBodyPart(html);
            }
            if( textContent!=null && textContent.length()>0 ) {
             text.setText(textContent);
             multipart.addBodyPart(text);
            }
            //msgBodyPart.setContent(htmlContent,"text/html; charset=UTF-8");
           
            BodyPart embedImage=new MimeBodyPart();
            //multipart.addBodyPart(msgBodyPart);
            newMessage.setContent(multipart);
            newMessage.setSentDate(new Date());

            newMessage.saveChanges();

            transport = sendMailSession.getTransport("smtp");
            transport.connect(this.getSmtpAddr(), this.getMailUser(), this.getPasswd());
            transport.sendMessage(newMessage, newMessage.getAllRecipients());
           
          }
          catch (Exception e) {
            throw e;
          }
          finally {
            if (transport != null)
              transport.close();
          }
        }
  public String getMailUser() {
    return mailUser;
  }
  public String getPasswd() {
    return passwd;
  }
  public String getSmtpAddr() {
    return smtpAddr;
  }
  public void setSmtpAddr(String smtpAddr) {
    this.smtpAddr = smtpAddr;
  }
  public void setPasswd(String passwd) {
    this.passwd = passwd;
  }
  public void setMailUser(String mailUser) {
    this.mailUser = mailUser;
  }

  public static void main(String args[]) throws Exception {
    MailManagerImpl mail = new MailManagerImpl();
    mail.setSmtpAddr("10.168.171.177");
    mail.setMailUser("wn");
    mail.setPasswd("password");
    String fromAddr = "wn@domain";
    //String fromAddr=null;
    String [] toAddr = {"wn@domain"};
    String subject = "testwn?";
    //String content = "你怎么老不给我回信呢? 我盼望着... ...";
    StringBuffer content = new StringBuffer();
    /*content.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size=6><b>your sale order </b></font>");
    content.append("<table border=1 width=100%>");
    content.append("<tr><td width=33%>订单号</td>");
    content.append("<td width=33%>商品名</td>");
    content.append("<td width=34%>数量</td>");
    content.append("</tr><tr>");
    content.append("<td width=33%>10000000</td>");
    content.append("<td width=33%>Dell笔记本电脑</td>");
    content.append("<td width=34%>1</td></tr>");
    content.append("</table>");*/

    content.append("<H1>what is your name?</H1>");

    try {
      mail.sendMailWithoutProxyServer(fromAddr, toAddr, subject, content.toString(), "dddd","en");
    }catch(InvalidMailAddressException ex) {
      System.out.println("aaaaa:"+ex);
    }catch(Exception e) {
      System.out.println(e);
    }
  }
}

分享到:
评论
5 楼 zhuqimeng 2008-05-26  
我 运行你的程序跑不起来啊 .
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<zhuqimeng1004@126.com>
553 authentication is required,smtp5,jtKowLCLb3PNdzpIqrS8AQ==.25961S2 1211791309
QUIT
javax.mail.MessagingException: 553 authentication is required,smtp5,jtKowLCLb3PNdzpIqrS8AQ==.25961S2 1211791309

这个错误也看不懂
4 楼 little fish 2008-05-17  
       
我做的系统什么时候才能发邮件啊?上火啊         
3 楼 little fish 2008-05-17  
2 楼 little fish 2008-05-17  
虽然写的很完整,但是怎么就没多写几行注释呢,要是再有一些注释就好了。
1 楼 little fish 2008-05-17  
InvalidMailAddressException("fromAddr is null");
为什么这句话在我的MyEclipse里不好用呢,我在网上看到说jdk1.5以上的版本是可以支持java mail 的组件的啊。这到底是为什么呢,不过能写出这么好的代码,还是很值得我学习的啊,在这里谢谢了,非常感谢!!!!

相关推荐

    java mail工具类

    创建JavaMail工具类时,可以考虑将常见的邮件操作封装为静态方法,如`sendEmail(String from, String to, String subject, String body)`,这样方便其他模块调用。 12. **测试和调试**: 开发完成后,应进行充分...

    java mail课本源代码java web

    Java Mail API 提供了丰富的类和接口,使得开发者能够方便地执行各种邮件操作,包括创建、发送、接收和管理邮件。它支持多种邮件协议,如SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和IMAP(因特网消息...

    java mail 1.4 源码

    2. **Message 类和Folder接口**:`javax.mail.Message` 是邮件对象的抽象,它封装了邮件的所有信息,包括主题、正文、附件等。`javax.mail.Folder` 接口代表邮件箱,提供了邮件的存取操作。 3. **Session 和 Store*...

    java mail 1.6.2 源码文档

    Header 类则封装了邮件头的所有信息,如 Subject、Date 等。 Java Mail 1.6.2 版本可能引入了新的特性、改进或修复了已知的问题。例如,可能提高了与现代邮件服务器的兼容性,增强了 SSL/TLS 支持,或者优化了性能...

    java 发送附件mail

    `MimeMessage`用于创建和管理邮件消息,而`MimeBodyPart`则用于封装邮件的内容,包括文本、图片、文件等。 以下是一个简单的步骤概述: 1. **配置SMTP服务器信息**:在发送邮件前,你需要设置SMTP服务器的主机名、...

    Java Mail邮件发送源码下载

    通过下载的"JavaMail"源码,你可以更深入地理解这些概念,看到实际的类和方法是如何工作的,从而帮助你在项目中更灵活地应用Java Mail API。这个源码可以帮助你解决邮件发送过程中可能遇到的问题,例如处理异常、...

    Apache Commons Mail 封装发送邮件类

    这个库是对JavaMail API的一个方便的封装,简化了通过Java程序发送电子邮件的过程。在JavaMail中,配置和使用邮件服务可能相对复杂,而Apache Commons Mail则通过提供预定义的邮件实现和简单易用的接口来解决了这个...

    Java 核心封装,原生ORM、LOG格式化、自定义Excel、Mail等等常用工具,开箱即用

    Java 核心封装,原生ORM、LOG格式化、自定义Excel、Mail等等常用工具 让Java开发者使用起来像python一样,做到直接调用库即可完成一件事。 1、java封装模块 想要将java的开发变的像python一样,让库的封装更彻底一点...

    封装java常用工具的类

    标题提到的"封装java常用工具的类"是一个很好的实践,将常见的功能模块化,方便复用和维护。下面我们将详细探讨这个主题中的多个知识点。 1. **邮件发送**:JavaMail API提供了发送电子邮件的能力。通过javax.mail...

    自己封装的Mail类

    自己封装的mail类可实现邮件发送功能,填到项目中可直接使用,简单好用!

    java mail.jar包

    `Multipart`类是`Part`的一个实现,用于封装多个`Part`,形成一个复杂的邮件结构。 在实际开发中,使用JavaMail API发送邮件的基本步骤如下: 1. 创建`Properties`对象并设置服务器相关属性。 2. 创建`Session`...

    java一键发送邮件,封装好的工具类

    本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...

    Java封装好的mail包发送电子邮件的类

    这个Java类`SendMail`是基于Java Mail API封装的一个简单邮件发送工具,用于发送包含文本内容和附件的电子邮件。Java Mail API 是一个开源的Java库,它提供了处理邮件服务器交互的能力,包括发送和接收邮件。 首先...

    java mail 详细资料

    这篇文档将深入讲解Java Mail API的使用,包括核心概念、主要类和接口以及如何构建一个邮件发送的示例。 首先,Java Mail API中的主要组件包括`Session`、`Message`、`Store`和`Transport`。`Session`代表与邮件...

    javaMailTools 封装javamail的发送功能,使用更方便

    JavaMail API基于MAPI(Messaging Application Programming Interface)规范,它定义了一系列接口和类,用于与邮件服务器交互。主要包括Session、Message、Multipart、Address等核心组件。Session是所有邮件操作的...

    java 发送邮件 小工具类+ mail.jar

    它包含了一个Java类,该类封装了发送电子邮件的过程,以及一个名为`mail.jar`的库,这个库可能包含了JavaMail API,是发送邮件所必需的。 JavaMail API是Java平台上用于处理邮件的开源库,它提供了一组API,允许...

    java mail 邮件开发

    在实际应用中,这个类可以接受必要的参数(如收件人地址、邮件主题、正文和附件路径),然后调用相应的Java Mail API方法进行发送。 至于`dao`,在Java应用中,DAO(数据访问对象)层是用来封装数据库操作的。在...

    Java Mail 开发包 jar文件

    这个JAR文件包含了Java Mail API的核心类库,提供了多种与邮件服务器通信的接口和类。主要组件包括: 1. **Session**:这是Java Mail中的核心组件,代表了与邮件系统的一次会话。开发者可以通过配置Session来设置...

    用Java Mail发送带有图片的html格式的邮件.txt

    本文将深入解析如何利用Java Mail实现这一需求,包括必要的知识点、代码示例及其实现细节。 ### 一、Java Mail API简介 Java Mail API是Java平台的一个扩展,用于读取和发送电子邮件。它提供了丰富的API来处理各种...

    Java发邮件:通过Bean封装.rar

    在这个项目中,我们可能会使用`javax.mail`和`javax.mail.internet`这两个包中的类,如`Session`、`Message`、`MimeMessage`、`Transport`等。 2. **Bean封装**: Bean是一种符合JavaBeans规范的简单Java对象,...

Global site tag (gtag.js) - Google Analytics