`
zengshaotao
  • 浏览: 787819 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java mail

    博客分类:
  • java
 
阅读更多

所有的java文件都在一个目录文件夹下,mail

然后复制各个类得源码,你就可以给其他人发邮件了。只不过这次比较特别,你用的是程序。需要说明的是,主机和邮箱服务器端口的获取,个人是在文件里进行配置的,所以你必须添加自己的获取方式。所以MailSerderInfo.java文件里通过读取配置文件获取邮件服务器和端口的语句需要你自己进行特别的设置,否则就会报错,但是这不影响最终的发送功能,只要你在Test.java里设置了相应的数据。

package com.huateng.mail;

/**  
 * 发送邮件需要使用的基本信息
 */
import java.util.Properties;
import java.util.Vector;

import buss.console.common.MailHost;

public class MailSenderInfo {
 // 发送邮件的服务器的IP和端口
 private String mailServerHost;
 // 端口可配置,这里默认是25
 private String mailServerPort = "25";
 // 邮件发送者的地址
 private String fromAddress;
 // 邮件接收者的地址
 private String toAddress;
 // 登陆邮件发送服务器的用户名和密码
 private String userName;
 private String password;
 // 是否需要身份验证
 private boolean validate = false;
 // 邮件主题
 private String subject;
 // 邮件的文本内容
 private String content;
 // 邮件附件的文件名
 private String[] attachFileNames;
 
 private Vector file = new Vector();// 附件文件集合
 
 public Vector getFile() {
  return file;
 }
 //添加附件 20110826 zengshaotao
 public void attachfile(String fname) {

  file.addElement(fname);

 }
 
 public MailSenderInfo() {
  // 邮件服务器名称和端口在配置文件里进行配置 zengshaotao 20110819
  this.mailServerHost = MailHost.getMailHostParam("mailServerHost");
  this.mailServerPort = MailHost.getMailHostParam("mailServerPort");
 }

 /**
  * 获得邮件会话属性
  */
 public Properties getProperties() {
  Properties p = new Properties();
  p.put("mail.smtp.host", this.mailServerHost);
  p.put("mail.smtp.port", this.mailServerPort);
  p.put("mail.smtp.auth", validate ? "true" : "false");
  return p;
 }

 public String getMailServerHost() {
  return mailServerHost;
 }

 // public void setMailServerHost() {
 // this.mailServerHost = mailServerHost;
 // }
 public String getMailServerPort() {
  return mailServerPort;
 }

 // public void setMailServerPort(String mailServerPort) {
 // this.mailServerPort = mailServerPort;
 // }
 public boolean isValidate() {
  return validate;
 }

 public void setValidate(boolean validate) {
  this.validate = validate;
 }

 public String[] getAttachFileNames() {
  return attachFileNames;
 }

 public void setAttachFileNames(String[] fileNames) {
  this.attachFileNames = fileNames;
 }

 public String getFromAddress() {
  return fromAddress;
 }

 public void setFromAddress(String fromAddress) {
  this.fromAddress = fromAddress;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getToAddress() {
  return toAddress;
 }

 public void setToAddress(String toAddress) {
  this.toAddress = toAddress;
 }

 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public String getSubject() {
  return subject;
 }

 public void setSubject(String subject) {
  this.subject = subject;
 }

 public String getContent() {
  return content;
 }

 public void setContent(String textContent) {
  this.content = textContent;
 }
}

package com.huateng.mail;

import javax.mail.*;  

public class MyAuthenticator extends Authenticator{  
    String userName=null;  
    String password=null;  
       
    public MyAuthenticator(){  
    }  
    public MyAuthenticator(String username, String password) {   
        this.userName = username;   
        this.password = password;   
    }   
    protected PasswordAuthentication getPasswordAuthentication(){  
        return new PasswordAuthentication(userName, password);  
    }  
}
package com.huateng.mail;

import java.util.ArrayList;
import java.util.Date;   
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;  

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;   
import javax.mail.BodyPart;   
import javax.mail.Message;   
import javax.mail.MessagingException;   
import javax.mail.Multipart;   
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 SimpleMailSender  {   
/**  
  * 以文本格式发送邮件  
  * @param mailInfo 待发送的邮件的信息  
  */   
    public boolean sendTextMail(MailSenderInfo mailInfo) {   
      // 判断是否需要身份认证   
      MyAuthenticator authenticator = null;   
      Properties pro = mailInfo.getProperties();  
      if (mailInfo.isValidate()) {   
      // 如果需要身份认证,则创建一个密码验证器   
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
      }  
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
      try {   
      // 根据session创建一个邮件消息   
      Message mailMessage = new MimeMessage(sendMailSession);   
      // 创建邮件发送者地址   
      Address from = new InternetAddress(mailInfo.getFromAddress());   
      // 设置邮件消息的发送者   
      mailMessage.setFrom(from);   
      // 创建邮件的接收者地址,并设置到邮件消息中   
      Address to = new InternetAddress(mailInfo.getToAddress());   
      mailMessage.setRecipient(Message.RecipientType.TO,to);   
      // 设置邮件消息的主题   
      mailMessage.setSubject(mailInfo.getSubject());   
      // 设置邮件消息发送的时间   
      mailMessage.setSentDate(new Date());   
      // 设置邮件消息的主要内容   
      String mailContent = mailInfo.getContent();   
      mailMessage.setText(mailContent);   
      // 发送邮件   
      Transport.send(mailMessage);  
      return true;   
      } catch (MessagingException ex) {   
          ex.printStackTrace();   
      }   
      return false;   
    }   
      
    /** *//**  
      * 以HTML格式发送邮件  
      * @param mailInfo 待发送的邮件信息  
      */   
    public boolean sendHtmlMail(MailSenderInfo mailInfo){   
      // 判断是否需要身份认证   
      MyAuthenticator authenticator = null;  
      Properties pro = mailInfo.getProperties();  
      //如果需要身份认证,则创建一个密码验证器    
      if (mailInfo.isValidate()) {   
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());  
      }   
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
      try {   
      // 根据session创建一个邮件消息   
      Message mailMessage = new MimeMessage(sendMailSession);   
      // 创建邮件发送者地址   
      Address from = new InternetAddress(mailInfo.getFromAddress());   
      // 设置邮件消息的发送者   
      mailMessage.setFrom(from);   
      // 创建邮件的接收者地址,并设置到邮件消息中   
      Address to = new InternetAddress(mailInfo.getToAddress());   
      // Message.RecipientType.TO属性表示接收者的类型为TO   
      mailMessage.setRecipient(Message.RecipientType.TO,to);   
      // 设置邮件消息的主题   
      mailMessage.setSubject(mailInfo.getSubject());   
      // 设置邮件消息发送的时间   
      mailMessage.setSentDate(new Date());   
      // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象   
      Multipart mainPart = new MimeMultipart();   
      // 创建一个包含HTML内容的MimeBodyPart   
      BodyPart html = new MimeBodyPart();   
      // 设置HTML内容   
      html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");   
      mainPart.addBodyPart(html);   
      // 将MiniMultipart对象设置为邮件内容   
      mailMessage.setContent(mainPart);   
      // 发送邮件   
      Transport.send(mailMessage);   
      return true;   
      } catch (MessagingException ex) {   
          ex.printStackTrace();   
      }   
      return false;   
    }
   
    public static List<InternetAddress> getInternetAddresss(String recps)
 throws AddressException {
     String strs[] = recps.split(";");
  List<InternetAddress> address = new ArrayList<InternetAddress>();
  for (int i = 0; i < strs.length; i++) {
   if (!"".equals((strs[i]))) {
    address.add(new InternetAddress(strs[i]));
   }
  }
  return address;
}
    /**   
     * 附带附件的邮件发送    zengshaotao 20110828
     * @param mailInfo 待发送的邮件信息  
     */   
   public boolean sendAttcMail(MailSenderInfo mailInfo){   
     // 判断是否需要身份认证   
     MyAuthenticator authenticator = null;  
     Properties pro = mailInfo.getProperties();  
     //如果需要身份认证,则创建一个密码验证器    
     if (mailInfo.isValidate()) {   
       authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());  
     }   
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
     Session sendMailSession = Session.getDefaultInstance(pro,authenticator);   
     try {
      // 根据session创建一个邮件消息   
      MimeMessage msg = new MimeMessage(sendMailSession);
      // 创建邮件发送者地址
   msg.setFrom(new InternetAddress(mailInfo.getFromAddress()));
  
   //----------------------------------------------------------------------
   String toList= mailInfo.getToAddress();
   List<InternetAddress> adresss = getInternetAddresss(toList);
  
   msg.setRecipients(Message.RecipientType.TO,
     adresss.toArray(new InternetAddress[adresss.size()]));
   //-----------------------------------------------------------------------
  
   // 设置邮件消息的接收者
   // msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(mailInfo.getToAddress()));
   // 创建邮件的接收者地址,并设置到邮件消息中
   msg.setSubject(transferChinese(mailInfo.getSubject()));
  
  
      //复合正文 (文本正文+附件)
   Multipart mp = new MimeMultipart();
  

   // 向Multipart添加文本正文

   MimeBodyPart mbpContent = new MimeBodyPart();

   mbpContent.setContent(mailInfo.getContent(), "text/html;charset=gb2312");

   // 向MimeMessage添加(Multipart代表正文)

   mp.addBodyPart(mbpContent);

   // 向Multipart添加附件

  Enumeration efile = mailInfo.getFile().elements();
  String fileName = "";
  while (efile.hasMoreElements()) {

   MimeBodyPart mbpFile = new MimeBodyPart();

   fileName = efile.nextElement().toString();

   FileDataSource fds = new FileDataSource(fileName);

   mbpFile.setDataHandler(new DataHandler(fds));

   mbpFile.setFileName(fds.getName());

   // 向MimeMessage添加(Multipart代表附件)
   mp.addBodyPart(mbpFile);
  }

  mailInfo.getFile().removeAllElements();//除去附件占用的内存

  // 向Multipart添加MimeMessage

  msg.setContent(mp);

  msg.setSentDate(new Date());

  msg.saveChanges();
  
  Transport.send(msg,msg.getAllRecipients());
  
     return true;   
     } catch (MessagingException ex) {   
         ex.printStackTrace();   
     }   
     return false;   
   }
  
    //转换字符,防止出现乱码 zengshaotao 20110826
 public String transferChinese(String strText) {

  try {

   strText = MimeUtility.encodeText(new String(strText.getBytes(),

   "GB2312"), "GB2312", "B");

  } catch (Exception e) {

   e.printStackTrace();

  }

  return strText;

 }

package com.huateng.mail;

public class Test {
 
 public static void main(String[] args){  
    
  //这个类主要是设置收发邮件信息 ,主机和端口信息在mailHost.properties文件进行配置
     MailSenderInfo mailInfo = new MailSenderInfo();
     mailInfo.setValidate(true);   
     mailInfo.setUserName("zengshaotao");   
     mailInfo.setPassword("");//您的邮箱密码   
     mailInfo.setFromAddress("zengshaotao@126.com");//您的邮箱地址   
     //多个收件人以";"分割
     mailInfo.setToAddress("zengshaotao@126.com;119003075@qq.com");   
     mailInfo.setSubject("大地财产保险应收应付系统邮件发送主题");   
     mailInfo.setContent("大地财产保险应收应付系统邮件发送内容"); 
    
   //添加多个附件
     mailInfo.attachfile("D:\\freemarker\\linux1.jpg");
     mailInfo.attachfile("D:\\freemarker\\ip.jpg");
     //发送邮件  
     SimpleMailSender sms = new SimpleMailSender();
         //sms.sendTextMail(mailInfo);//发送文体格式   
         //sms.sendHtmlMail(mailInfo);//发送html格式  
         sms.sendAttcMail(mailInfo);//发送带附件的格式的
   }
}
/*
1、使用此代码你可以完成你的javamail的邮件发送功能,三个类缺一不可。
2、三个类文件必须在同一个包中
3、不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用'smtp.163.com'。
因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。
4、另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("han2000lei@163.com");
这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。
5、关于javamail验证错误的问题,网上的解释有很多,但是正确的只有一个,那就是MyAuthenticator.java
 */

分享到:
评论

相关推荐

    java mail 1.4.5 jar_source 天涯浪子

    Java Mail 是一个开源的 Java API,它允许开发者在 Java 应用程序中处理电子邮件。这个“java mail 1.4.5 jar_source 天涯浪子”资源包含了 Java Mail 1.4.5 版本的 JAR 包、源代码和相关的文档,以及其依赖的 ...

    Java Mail.rar

    Java Mail 是一个强大的Java库,它为开发人员提供了一组API,用于处理电子邮件通信。这个名为 "Java Mail.rar" 的压缩包很可能包含了实现这一功能所需的jar文件和其他资源。在这个压缩包中,我们可以找到 "Java Mail...

    Java Mail 发布邮件

    Java Mail 是一个强大的开源库,用于在Java应用程序中处理电子邮件通信。它提供了API,使得开发者可以方便地发送、接收和管理邮件。这个压缩包文件很可能包含了一组示例代码或工具,帮助我们理解如何使用Java Mail ...

    使用Java mail API访问Lotus Domino邮箱

    Java Mail API 是一个广泛使用的Java库,用于处理电子邮件通信,包括发送、接收和管理邮件。在本场景中,我们将深入探讨如何使用Java Mail API来访问Lotus Domino邮箱系统。Lotus Domino是由IBM开发的企业级协作平台...

    java mail jar包

    该资源包含了java mail开发所需要的jar,如下: commons-email-1.2-bin.zip commons-email-1.4-bin.zip javamail_1.4.6.zip javamail_1.4.7.zip javax.mail.jar mailapi.jar smtp.jar

    用java mail发邮件源码,支持多种邮局,支持单发和群发

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...

    Java_Mail.zip_java_java mail_java.mail_mail

    Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在Java应用...

    Java mail-1.4.7 jar包

    Java Mail 是一个开源的Java库,它为Java应用程序提供了与各种邮件系统交互的能力。这个"mail-1.4.7.jar"是Java Mail的一个版本,主要用于处理电子邮件的发送和其他相关功能。版本号1.4.7表明这是一个较旧但稳定版本...

    java mail课本源代码java web

    Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。在Java Web开发中,它是一个不可或缺的组件,尤其在构建小型系统时,可以作为邮件模块直接应用,无需大量改动。这个压缩包文件包含了与Java Mail相关...

    java mail 1.4 源码

    Java Mail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。Java Mail 1.4 源码的分析和理解有助于我们深入探究其内部工作原理,优化邮件处理效率,并能根据需求进行定制化...

    java Mail 发送邮件及邮件附件

    Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...

    java mail工具类

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个工具类的创建旨在简化邮件处理的复杂性,使开发者能够便捷地集成邮件功能。以下是对JavaMail工具类及其相关知识点的详细说明: 1. **...

    java Mail的Demo

    Java Mail 是一个强大的Java库,专门用于处理电子邮件的发送、接收以及其他相关操作。它提供了丰富的API,使得在Java应用程序中实现邮件通信变得简单且灵活。本文将深入探讨Java Mail的基本概念、工作原理以及如何...

    java mail,spring mail

    Java Mail和Spring Mail是Java开发中用于处理电子邮件的两个关键库。它们允许开发者在应用程序中实现发送、接收和处理电子邮件的功能。在这个实例中,我们主要关注如何使用Java Mail API和Spring Mail来实现实时的多...

    java mail 包 (activation.jar, mail.jar)

    Java Mail 是一个用于处理电子邮件的开源API,它允许Java开发者编写能够发送、接收、存储和检索电子邮件的应用程序。在Java Mail API中,`activation.jar` 和 `mail.jar` 是两个非常重要的组件,它们为Java环境提供...

    java mail 1.6.2 源码文档

    Java Mail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个 API 遵循 JavaBeans Activation Framework (JAF) 规范,允许处理 MIME 类型的数据,包括电子邮件消息。Java ...

    Java Mail邮件发送源码下载

    Java Mail邮件发送是Java开发中常见的一项功能,用于在应用程序中发送电子邮件。Java Mail API提供了一个标准的接口,使得开发者可以方便地实现SMTP(简单邮件传输协议)和其他邮件协议的功能。下面将详细介绍Java ...

    java mail server

    Java邮件服务器(Java Mail Server,简称JMailSrv)是一种基于Java技术构建的邮件服务器软件,主要用于处理电子邮件的接收、发送以及存储等任务。在Java开发环境中,它扮演着重要的角色,为开发者提供了灵活且可扩展...

    java mail api下载

    Java Mail API是Java平台上用于处理电子邮件的标准API,它提供了一组接口和类,使得开发者能够构建应用程序来发送、接收和管理邮件。这个API是Java Community Process(JCP)制定的JSR 919标准的一部分,它允许开发...

Global site tag (gtag.js) - Google Analytics