`

java实现发送电子邮件功能

    博客分类:
  • Java
阅读更多

在开发中经常要给用户自动的发送电子邮件,今天在网上搜了一个发送电子邮件的java程序,写的不错,条理也比较清楚,而且注释比较多,发到我的博客,希望能对大家有帮助,已经调试通过,不过要下一个mail.jar和activation.jar当然要有j2ee.jar 了,别的不多说了,感谢源程序的创作者

package mail;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

 

 


public class Mail {
/** 发件方式 - 普通发送 */
final public static int TO = 0;
/** 发件方式 - 抄送 */
final public static int CC = 1;
/** 发件方式 - 密件抄送 */
final public static int BCC = 2;

/** 邮件相关信息 - SMTP 服务器 */
private String mailSMTPHost = null;
/** 邮件相关信息 - 邮件用户名 */
private String mailUser = null;
/** 邮件相关信息 - 密码 */
private String mailPassword = null;
/** 邮件相关信息 - 发件人邮件地址 */
private String mailFromAddress = null;
/** 邮件相关信息 - 邮件主题 */
private String mailSubject = "";
/** 邮件相关信息 - 邮件发送地址 */
private Address[] mailTOAddress = null;
/** 邮件相关信息 - 邮件抄送地址 */
private Address[] mailCCAddress = null;
/** 邮件相关信息 - 邮件密件抄送地址 */
private Address[] mailBCCAddress = null;
/** 邮件相关信息 - 邮件正文(复合结构) */
private MimeMultipart mailBody = null;

public Mail() {
    mailBody = new MimeMultipart();
}

/**
   * 设置 SMTP 服务器
   * @param strSMTPHost 邮件服务器名称或 IP
   * @param strUser 邮件用户名
   * @param strPassword 密码
   */
public void setSMTPHost(String strSMTPHost, String strUser,
                          String strPassword) {
    this.mailSMTPHost = strSMTPHost;
    this.mailUser = strUser;
    this.mailPassword = strPassword;
}

/**
   * 设置邮件发送地址
   * @param strFromAddress 邮件发送地址
   */
public void setFromAddress(String strFromAddress) {
    this.mailFromAddress = strFromAddress;
}

/**
   * 设置邮件目的地址
   * @param strAddress 邮件目的地址列表, 不同的地址可用;号分隔
   * @param iAddressType 邮件发送方式 (TO 0, CC 1, BCC 2) 常量已在本类定义
   * @throws AddressException
   */
public void setAddress(String strAddress, int iAddressType) throws
      AddressException {
    switch (iAddressType) {
      case Mail.TO: {
        ArrayList alAddress = StringHelper.split(strAddress, ';');
        mailTOAddress = new Address[alAddress.size()];
        for (int i = 0; i < alAddress.size(); i++) {
          mailTOAddress[i] = new InternetAddress( (String) alAddress.get(i));
        }
        break;
      }
      case Mail.CC: {
        ArrayList alAddress = StringHelper.split(strAddress, ';');
        mailCCAddress = new Address[alAddress.size()];
        for (int i = 0; i < alAddress.size(); i++) {
          mailCCAddress[i] = new InternetAddress( (String) alAddress.get(i));
        }
        break;
      }
      case Mail.BCC: {
        ArrayList alAddress = StringHelper.split(strAddress, ';');
        mailBCCAddress = new Address[alAddress.size()];
        for (int i = 0; i < alAddress.size(); i++) {
          mailBCCAddress[i] = new InternetAddress( (String) alAddress.get(i));
        }
        break;
      }
    }
}

/**
   * 设置邮件主题
   * @param strSubject 邮件主题
   */
public void setSubject(String strSubject) {
    this.mailSubject = strSubject;
}

/**
   * 设置邮件文本正文
   * @param strTextBody 邮件文本正文
   * @throws MessagingException
   */
public void setTextBody(String strTextBody) throws MessagingException {
    MimeBodyPart mimebodypart = new MimeBodyPart();
    mimebodypart.setText(strTextBody, "GBK");
    mailBody.addBodyPart(mimebodypart);
}

/**
   * 设置邮件超文本正文
   * @param strHtmlBody 邮件超文本正文
   * @throws MessagingException
   */
public void setHtmlBody(String strHtmlBody) throws MessagingException {
    MimeBodyPart mimebodypart = new MimeBodyPart();
    mimebodypart.setDataHandler(new DataHandler(strHtmlBody, "text/html;charset=GBK"));
    mailBody.addBodyPart(mimebodypart);
}

/**
   * 设置邮件正文外部链接 URL, 信体中将包含链接所指向的内容
   * @param strURLAttachment 邮件正文外部链接 URL
   * @throws MessagingException
   * @throws MalformedURLException
   */
public void setURLAttachment(String strURLAttachment) throws
      MessagingException, MalformedURLException {
    MimeBodyPart mimebodypart = new MimeBodyPart();
    mimebodypart.setDataHandler(new DataHandler(new URL(strURLAttachment)));
    mailBody.addBodyPart(mimebodypart);
}

/**
   * 设置邮件附件
   * @param strFileAttachment 文件的全路径
   * @throws MessagingException
   * @throws UnsupportedEncodingException
   */
public void setFileAttachment(String strFileAttachment) throws
      MessagingException, UnsupportedEncodingException {
    File path = new File(strFileAttachment);
    if (!path.exists() || path.isDirectory()) {
      return;
    }
    String strFileName = path.getName();
    MimeBodyPart mimebodypart = new MimeBodyPart();
    mimebodypart.setDataHandler(new DataHandler(new FileDataSource(
        strFileAttachment)));
    // modified by zord @ 2003/6/16 to support Chinese File Name
    // mimebodypart.setFileName(strFileName);
    mimebodypart.setFileName(MimeUtility.encodeText(strFileName));
    // end of modify
    mailBody.addBodyPart(mimebodypart);
}

/**
   * 邮件发送(一次发送多个地址, 优点速度快, 但是有非法邮件地址时将中断发送操作)
   * @throws MessagingException
   */
public void sendBatch() throws MessagingException {
    Properties properties = new Properties();
    properties.put("mail.smtp.host", this.mailSMTPHost);
    Session session = Session.getInstance(properties, null);
    MimeMessage mimemessage = new MimeMessage(session);
    mimemessage.setFrom(new InternetAddress(this.mailFromAddress));
    if (mailTOAddress != null) {
      mimemessage.addRecipients(javax.mail.Message.RecipientType.TO,
                                this.mailTOAddress);
    }
    if (mailCCAddress != null) {
      mimemessage.addRecipients(javax.mail.Message.RecipientType.CC,
                                this.mailCCAddress);
    }
    if (mailBCCAddress != null) {
      mimemessage.addRecipients(javax.mail.Message.RecipientType.BCC,
                                this.mailBCCAddress);
    }
    mimemessage.setSubject(this.mailSubject);
    mimemessage.setContent(this.mailBody);
    mimemessage.setSentDate(new Date());
    Transport transport = session.getTransport("smtp");
    transport.connect(this.mailSMTPHost, this.mailUser, this.mailPassword);
    Transport.send(mimemessage);
    System.out.println("已向下列邮箱发送了邮件");
    if (mailTOAddress != null) {
      for (int i = 0; i < mailTOAddress.length; i++) {
        System.out.println(mailTOAddress[i]);
      }
    }
    if (mailCCAddress != null) {
      for (int i = 0; i < mailTOAddress.length; i++) {
        System.out.println(mailCCAddress[i]);
      }
    }
    if (mailBCCAddress != null) {
      for (int i = 0; i < mailTOAddress.length; i++) {
        System.out.println(mailBCCAddress[i]);
      }
    }
}

static public void main(String str[]) throws MessagingException
{
Mail mail=new Mail();
mail.setAddress("jgls@21cn.com",Mail.TO);
mail.setFromAddress("jgls@21cn.com");
mail.setSMTPHost("mail.21cn.com","","");
mail.setSubject("测试一下");
mail.setHtmlBody("");
mail.sendBatch();
}
}

分享到:
评论

相关推荐

    java实现发送邮件功能源码+jar

    本教程将深入讲解如何使用Java实现邮件发送功能,并提供相关的源码和jar包。 1. **JavaMail API**: JavaMail API 是Java平台上用于处理电子邮件的主要库,它提供了一系列的接口和类,使得开发者能够方便地创建、...

    java实现发送邮件功能demo

    JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,包括发送、接收、管理邮件等。本文将深入探讨如何使用JavaMail API在Java应用程序中实现发送邮件的功能,同时也会涉及验证码验证以及网页版...

    java实现邮件发送(三种发送方式都有)

    JavaMail API是Java中用于处理电子邮件的标准库,包括了发送邮件、接收邮件等功能。要发送普通邮件,你需要设置SMTP服务器地址、端口、用户名和密码,然后创建`Message`对象并设置发件人、收件人、主题和正文,最后...

    java实现邮件发送功能

    本教程将深入探讨如何使用Java实现这一功能。Java提供了多种库来处理邮件发送,其中最常用的便是JavaMail API。 JavaMail API是Java平台上用于发送和接收电子邮件的标准API,它提供了丰富的接口和类来处理邮件协议...

    java发送邮件功能

    Java发送邮件功能是Java开发中常见的一项任务,它允许开发者通过编程的方式实现电子邮件的发送,包括正文内容、附件以及抄送等高级功能。在Java中,我们主要利用JavaMail API来实现这一目标。 JavaMail API是一个...

    Java发送outlook邮件

    在IT行业中,使用编程语言发送电子邮件是一项常见的任务,特别是在自动化脚本或系统集成中。Java作为广泛应用的编程语言,提供了多种方法来发送邮件,包括通过Outlook和Notes客户端。在这个场景下,我们将深入探讨...

    java实现电子邮箱功能项目 代码

    Java 实现电子邮箱功能是一个常见的编程任务,尤其在企业级应用开发中十分常见。这个项目主要涉及了JavaMail API和Spring框架(SSH架构中的S),为用户提供邮件的发送、接收和管理功能。以下是对这些知识点的详细...

    java开发实现163邮件发送(支持附件

    下面将详细讲解如何使用Java实现这一功能。 1. **SMTP服务和JavaMail API** SMTP是互联网标准,用于发送电子邮件。163邮箱提供了SMTP服务器地址,开发者可以利用JavaMail API与这个服务器通信。JavaMail API是一个...

    jmail 通过Java实现的邮件发放功能

    Java邮件API,通常被称为JavaMail,是Java开发者用于发送和接收电子邮件的标准库。JMail是一个基于JavaMail API的工具,它简化了邮件的发送过程,允许开发者通过编程方式轻松实现邮件发放功能。在本篇文章中,我们将...

    简单Java邮件发送 Java实现邮件发送

    本教程将详细介绍如何使用Java实现邮件发送功能,同时提供了一个Jar包和demo源码供参考。 首先,我们需要理解JavaMail API,这是一个Java平台上的邮件处理库,它提供了发送和接收电子邮件的能力。JavaMail API 包含...

    java发送电子邮件

    在提供的`发送电子邮件.java`和`发送电子邮件的类`中,应该包含了这些步骤的具体实现。通过阅读源代码,你可以更深入地理解每个部分的功能和作用。在实际应用中,可能还需要处理异常、错误重试、SSL/TLS加密等问题,...

    Java实现发送邮件.pdf

    ### Java实现发送邮件知识点详解 #### 一、引言 电子邮件是互联网中最为常见的通信方式之一,被广泛应用于用户激活、密码重置、营销推广等多个场景。为了满足自动化的需求,通常采用程序化的方式进行邮件的发送。...

    java实现发送邮件功能的jar包

    JavaMail API是Java平台上的一个标准库,用于处理电子邮件。本篇将详细介绍如何利用JavaMail API来实现发送邮件的功能,并探讨相关的核心概念。 首先,`javamail`是一个关键的组件,它包含了实现SMTP(简单邮件传输...

    java实现发送邮件jar文件

    这个"java实现发送邮件jar文件"是JavaMail的一个实现,封装了SMTP(简单邮件传输协议)和其他相关协议,使得开发者能够轻松地集成邮件功能到他们的项目中。 在Java中实现邮件发送,首先需要引入JavaMail的相关依赖...

    java实现一个邮件客户端

    JavaMail API是Java平台上的标准库,用于处理电子邮件的收发。在这个过程中,我们将涵盖以下几个关键知识点: 1. **JavaMail API**: JavaMail API是Java平台的核心组件之一,提供了处理SMTP(简单邮件传输协议)、...

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    而Java Socket库则提供了实现SMTP客户端所需的基本功能,允许我们创建连接到SMTP服务器的套接字,并通过这个连接发送邮件。以下是一些关键知识点: 1. **Java Socket类**:Java的`java.net.Socket`类是网络通信的...

    java实现了发送邮件功能

    以上就是Java使用JavaMail API实现发送邮件的基本步骤和扩展功能。通过熟练掌握这些知识点,你可以构建出适应各种需求的邮件发送系统。在实际开发中,还应考虑异常处理、错误重试以及性能优化等细节,确保邮件发送的...

    JAVA+发送电子邮件源代码学习

    在Java编程语言中,发送电子邮件是一项常见的任务,尤其在自动化通知、系统消息传递或客户服务场景中。本资源提供了关于使用Java发送电子邮件的源代码学习资料,让我们深入探讨这个主题。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics