`
雁栖湖
  • 浏览: 23838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaEmail发邮件

    博客分类:
  • Java
 
阅读更多
  1. import java.util.Map;
    import java.util.Properties;
    
    /** 
    * 发送邮件需要使用的基本信息 
    */ 
    public class MailSenderInfo { 
    	// 发送邮件的服务器的IP和端口 
    	private String mailServerHost;
    	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 Map<String, String> map;
    	//附件名称
    	private String affixName;
    	//附件地址
    	private String affixAddress;
    	
    	public String getAffixName() {
    		return affixName;
    	}
    	public void setAffixName(String affixName) {
    		this.affixName = affixName;
    	}
    	public String getAffixAddress() {
    		return affixAddress;
    	}
    	public void setAffixAddress(String affixAddress) {
    		this.affixAddress = affixAddress;
    	}
    	public Map<String, String> getMap() {
    		return map;
    	}
    	public void setMap(Map<String, String> map) {
    		this.map = map;
    	}
    	/** 
    	  * 获得邮件会话属性 
    	  */ 
    	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(String mailServerHost) { 
    	  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; 
    	} 
    } 
    
     2.
    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);
    	}
    }
     
     3.
    import java.util.Date; 
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    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.InternetAddress; 
    import javax.mail.internet.MimeBodyPart; 
    import javax.mail.internet.MimeMessage; 
    import javax.mail.internet.MimeMultipart; 
    
    /** 
    * 简单邮件(不带附件的邮件)发送器 
    */ 
    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(); 
    
    	// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
          Multipart multipart = new MimeMultipart();         
          
        //添加附件
          MimeBodyPart mbt1= new MimeBodyPart();
          DataSource source = new FileDataSource(mailInfo.getAffixAddress());
          //添加附件的内容
          mbt1.setDataHandler(new DataHandler(source));
          //添加附件的标题
          //这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
          sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
          mbt1.setFileName("=?GBK?B?"+enc.encode(mailInfo.getAffixName().getBytes())+"?=");
          //放入邮件正文内容
          MimeBodyPart mbt2= new MimeBodyPart();
          mbt2.setText(mailContent);
          
          multipart.addBodyPart(mbt2);
          multipart.addBodyPart(mbt1);
        
          //将multipart对象放到message中
          mailMessage.setContent(multipart);
    
    	  // 发送邮件 
    	  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 multipart = new MimeMultipart(); 
    	  // 创建一个包含HTML内容的MimeBodyPart 
    	  BodyPart html = new MimeBodyPart(); 
    	  // 设置HTML内容 
    	  html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
    	   
          multipart.addBodyPart(html);
       
       // 将MiniMultipart对象设置为邮件内容 
    	  mailMessage.setContent(multipart); 
    	  // 发送邮件 
    	  Transport.send(mailMessage); 
    	  return true; 
    	  } catch (MessagingException ex) { 
    		  ex.printStackTrace(); 
    	  } 
    	  return false; 
    	} 
    } 
     4.
    public class SendEmailTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args){
    		System.out.println("正在发送邮件...");
            //这个类主要是设置邮件
    		MailSenderInfo mailInfo = new MailSenderInfo(); 
    		mailInfo.setMailServerHost("smtp.163.com");//smtp服务器
    		mailInfo.setMailServerPort("25");//服务器端口
    		mailInfo.setValidate(true);//需要验证
    		mailInfo.setUserName("yanqihubian@163.com");//用户名
    		mailInfo.setPassword("******");//您的邮箱密码 
    		mailInfo.setFromAddress("yanqihubian@163.com");//发送人
    		mailInfo.setToAddress("yanqihubian@163.com");//收件人
    		mailInfo.setSubject("设置邮箱标题");//邮件标题
    		mailInfo.setContent("设置邮箱内容");//邮件内容
    		mailInfo.setAffixAddress("c:/yanqihubian.txt");//附件地址
    		mailInfo.setAffixName("中文标题123Xxx.txt");//附件名称
    		//这个类主要来发送邮件
    		SimpleMailSender sms = new SimpleMailSender();
    		boolean flag = sms.sendTextMail(mailInfo);//发送文体格式 
    //		boolean flag = sms.sendHtmlMail(mailInfo);//发送HTML格式
    		if (flag)
    			System.out.println("发送邮件完毕!!!");
    		else
    			System.out.println("邮件发送失败!!!");
    	}
    }
    
     
分享到:
评论

相关推荐

    java email 发邮件.docx

    Java邮件发送是Java编程中一个常见的任务,主要利用JavaMail API来实现。以下是一些关于使用Java发送电子邮件的关键知识点: 1. **JavaMail API**: JavaMail API 是一套用于处理电子邮件的开源库,它允许Java开发者...

    javaemail发送邮件(带附件)

    "javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...

    java发邮件 java发email

    4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...

    Java EMail Java发邮件的依赖库

    Java Email 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库允许开发者在Java应用程序中实现复杂的电子邮件功能,如创建、发送、读取和管理邮件。Java EMail 库通常依赖于两个核心组件,即 javax.mail-...

    写java程序实现发邮件功能

    本篇文章将深入探讨如何使用Java编写程序来实现邮件的发送,包括发送纯文本邮件、带有附件的邮件、包含图片的邮件以及在邮件中显示图片。 首先,我们得知道JavaMail API是实现邮件发送功能的关键库。它提供了一系列...

    java email和email附件发送

    2. **创建邮件消息(Message)**:接着,使用`MimeMessage`类创建一个邮件消息实例,设置发件人、收件人、主题和正文。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new Internet...

    java email 发送邮件

    4. **构建Message**:使用MimeMessage类创建一个邮件消息实例,设置发件人、收件人、主题和邮件内容。邮件内容可以是纯文本、HTML或者带有附件。 ```java MimeMessage message = new MimeMessage(session); message...

    Java发送outlook邮件

    创建`MimeMessage`对象并设置邮件信息,包括发件人、收件人、主题和正文: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your_email@example.com")); message....

    java发邮件代码

    3. **创建Message对象**:使用Session对象创建一个Message实例,设置邮件的基本信息,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress...

    java自动发邮件

    【Java自动发邮件详解】 在Java中实现自动发送邮件的功能是一项常见的任务,尤其对于系统集成、通知服务等应用场景。这个示例中展示了一个基于Servlet的简单邮件发送系统,通过配置`web.xml`文件来初始化参数,并...

    JavaEmail完整版

    JavaEmail完整版是一个Java开发的电子邮件发送库,它允许开发者通过编程的方式发送电子邮件。这个源码包包含了完整的实现,提供了详细的示例和配置文件,使得开发者可以快速理解和使用。下面我们将详细探讨JavaEmail...

    用java代码发邮件,真是牛啊,可群发,也可发附件

    Java编程语言以其强大的功能和广泛的应用领域而闻名,其中之一就是能够通过编程方式发送电子邮件。在本文中,我们将深入探讨如何使用Java代码实现邮件发送,包括群发和添加附件的功能。 首先,要实现这个功能,我们...

    java 发邮件例子

    以下是一个基于`commons-email-1.1`库的Java发邮件实例: 首先,确保你的项目已经正确地引入了`commons-email`库。这通常通过Maven或Gradle的依赖管理来完成。如果你使用的是Maven,可以在`pom.xml`文件中添加以下...

    java实现发邮件实例

    在Java编程语言中,发送电子邮件是一项常见的任务,尤其在自动化通知、系统消息传递或用户注册验证等场景下。本文将详细介绍如何使用Java实现发送邮件的实例,并提供所需的库和步骤。 首先,JavaMail API是Java中...

    java email邮件发送所需mail相关jar包

    "java email邮件发送所需mail相关jar包"就是这样一个集合,它包含了执行邮件发送所需的类和方法。 邮件发送主要依赖于JavaMail API,这是一个开源的Java库,它提供了与邮件服务器交互的标准API。JavaMail API包括多...

    java email邮件发送

    Java邮件发送是一个常见的任务,尤其在企业级应用中,用于发送通知、验证码或者报告等。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,提供了丰富的接口和类来处理电子邮件的发送和...

    javaemail邮件群发

    3. `InternetAddress`:用于处理邮件地址,包括发件人、收件人、抄送人和密送人的地址。 4. `Transport`:负责实际的邮件发送,它使用`Session`创建并发送`Message`。 下面是一个简单的JavaMail邮件群发的步骤: ...

    java发送邮件完整程序

    3. **创建Message对象**:`Message`是邮件内容的容器,可以设置主题、发件人、收件人、抄送人等信息,使用`MimeMessage`类实现。 4. **创建Transport对象**:`Transport`负责实际的邮件发送,通过`Session`获取`...

    用java开发Email工具之发送邮件

    ### 使用Java开发Email工具之发送邮件 在Java中开发电子邮件工具时,主要依赖于JavaMail API,这是一个功能强大的库,可以实现多种类型的邮件发送、接收等功能。本文将详细介绍如何使用JavaMail API来发送邮件,...

Global site tag (gtag.js) - Google Analytics