`

用JavaMail的API发送邮件

    博客分类:
  • java
 
阅读更多

1、MimeMessage的包装类 
  

public class SimpleMessageWraper {
	private Session session;
	private MimeMessage mimeMessage;
	private Multipart multipart = new MimeMultipart();;
	
	public Session getSession() {
		return session;
	}

	public MimeMessage getMimeMessage() {
		return mimeMessage;
	}
	
	private String arrayToString(String[] array){
		String s = "";
		if(array != null && array.length > 0){
			for(int i=0;i<array.length;i++){
				if(s == ""){
					s = array[i].trim();
				}else{
					s += "," + array[i].trim();
				}
			}
		}
		return s;
	}
	
	public SimpleMessageWraper(Properties props){
        session = Session.getInstance(props);
        session.setDebug(false);
        
		mimeMessage = new MimeMessage(session);
	}
	
	public void setFrom(String from)throws MessagingException{
		mimeMessage.setFrom(new InternetAddress(from));
        mimeMessage.saveChanges();
	}
	
	public void setTo(String[] toArray)throws MessagingException{
		String s = arrayToString(toArray);
		Address[] addresses = InternetAddress.parse(s);
		mimeMessage.setRecipients(Message.RecipientType.TO, addresses);
        mimeMessage.saveChanges();
	}
	
	public void setCc(String[] ccArray)throws MessagingException{
		String s = arrayToString(ccArray);
		Address[] addresses = InternetAddress.parse(s);
		mimeMessage.setRecipients(Message.RecipientType.CC, addresses);
        mimeMessage.saveChanges();
	}
	
	public void setSubject(String subject)throws MessagingException{
		mimeMessage.setSubject(subject);
        mimeMessage.saveChanges();
	}
	
	public void setSentDate(Date date)throws MessagingException{
		mimeMessage.setSentDate(date);
        mimeMessage.saveChanges();
	}

    public void setText(String text)throws MessagingException{
    	MimeBodyPart mimeBodyPart = new MimeBodyPart(); 
    	mimeBodyPart.setText(text);
    	multipart.addBodyPart(mimeBodyPart);
    	mimeMessage.setContent(multipart);
        mimeMessage.saveChanges();
    }
    
    public void addAttactment(File file)throws MessagingException,UnsupportedEncodingException{
    	if(file == null) return;
    	
    	MimeBodyPart mimeBodyPart = new MimeBodyPart(); 
    	mimeBodyPart.setFileName(MimeUtility.encodeText(file.getName(), "GBK", "B")); //对邮件头采用base64方式编码
    	mimeBodyPart.setDataHandler(new DataHandler(new FileDataSource(file))); 
    	multipart.addBodyPart(mimeBodyPart); 
    	mimeMessage.setContent(multipart);
        mimeMessage.saveChanges();
    }
}

 2、发送邮件的工具类

   

public class SimpleMailFactory {
	private static SimpleMailConfig simpleMailConfig = null;
	private static Properties props = null;
	
	static{
	    //取得包含邮件配置信息的bean对象
		simpleMailConfig = (SimpleMailConfig)SpringContextUtil.getBean(Constants.simpleMailConfigBeanName);
		
		props = new Properties();
        props.put("mail.smtp.host", simpleMailConfig.getHost());
        props.put("mail.smtp.auth", simpleMailConfig.getAuth());
	}
	
	/**
	 * 功能:取得邮件消息对象的包装器
	 */
	public static SimpleMessageWraper getSimpleMessageWraper(){
		return new SimpleMessageWraper(props);
	}

	/**
	 * 功能:邮件发送
	 */
	public static void send(SimpleMessageWraper messageWraper)throws Exception{
		MimeMessage mimeMessage = messageWraper.getMimeMessage();
        Transport transport = messageWraper.getSession().getTransport(simpleMailConfig.getTransport());
        
        transport.connect(simpleMailConfig.getHost(), simpleMailConfig.getUsername(), simpleMailConfig.getPassword());
        transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
        transport.close();        
	}
}

 3、包含邮件配置信息的bean对象

  

<bean id="simpleMailConfig" class="com.cjm.common.mail.SimpleMailConfig">
	<property name="host" value="smtp.163.com"/>
	<property name="username" value="uid"/>
	<property name="password" value="pwd"/>
	<property name="auth" value="true"/>
</bean>

 

4、实例代码

SimpleMessageWraper w1 = SimpleMailFactory.getSimpleMessageWraper();
w1.setFrom("ServerMailAddress@163.com");
w1.setTo(new String[]{"TargetAddress@139.com"});
w1.setSubject("标题");
w1.setText("邮件内容");
w1.addAttactment(new File("c:\\附件.txt"));
SimpleMailFactory.send(w1);

 

分享到:
评论

相关推荐

    使用JavaMail API 发送邮件

    以下是一个简单的JavaMail API发送邮件的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; public class EmailSender { public static void main(String[] args) throws Exception { // ...

    JavaMail API 1.4.7 官网下载 最新版

    JavaMail API 1.4.7 是一个广泛使用的开源库,专为Java开发者设计,用于处理电子邮件相关的任务。这个版本的API提供了丰富的功能,包括发送、接收邮件,管理邮箱,处理附件,以及支持多种邮件协议如SMTP(简单邮件...

    使用JAVAMail代发邮件

    JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 IMAP。 在本文中,我们将讨论如何使用 JavaMail 库来代发邮件...

    javaMail API 跟 javaMail.jar包

    JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...

    JavaMail(JAVA邮件服务器)API详解 chm.rar

    使用JavaMail API的内容会涵盖实际的代码示例,比如如何创建和发送简单的文本邮件、带有附件的邮件,以及如何接收和读取邮件。这部分还会涉及到认证机制,如如何设置用户名和密码进行SMTP身份验证,以及SSL/TLS安全...

    利用javamail api实现的邮件发送类

    JavaMail API 是一个开源的Java库,用于处理电子邮件的创建、发送和接收。这个API提供了一组接口和类,使得开发者能够直接与SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)服务器进行交互...

    JavaMail发送邮件的例子

    例如,你可以创建一个名为`SendMailAction`的类,其中包含一个`execute()`方法,这个方法使用JavaMail API发送邮件。 如果你的项目中包含一个名为`mySendMail`的类或文件,这可能是一个实现邮件发送的示例代码。这...

    javaMail API和JAR

    JavaMail API是Java编程语言中用于处理电子邮件的库,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。在JavaMail API中,`mail.jar`是一个核心组件,包含了实现邮件功能所需的全部类和接口。在这...

    JavaMail API的两个jar文件

    JavaMail API是Java编程语言中用于处理邮件服务的接口库,它允许开发者通过代码来发送、接收和管理电子邮件。在JavaMail API中,`mail.jar` 和 `activation.jar` 是两个核心的JAR文件,它们提供了不同的功能支持。 ...

    JavaMail-1.5 API

    例如,使用JavaMail API发送邮件时,开发者需要使用Session、Message、Transport等类,并且可能需要配置邮件服务器的相关参数,比如SMTP服务器的地址、端口、登录用户名和密码等。 总的来说,JavaMail API是一个...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    javamail API帮助文档

    10. **POP3和IMAP支持**:JavaMail API不仅支持SMTP(发送邮件),还支持POP3(接收邮件)和IMAP(更高级的邮件访问协议)。 以上只是一部分JavaMail API的关键概念和功能。通过阅读提供的英文帮助文档,开发者可以...

    使用javaMail发送邮件

    以上就是使用JavaMail API发送邮件的基本步骤。需要注意的是,实际应用中可能需要处理各种异常,如网络问题、认证失败等。此外,对于SSL/TLS安全连接,还需要设置相应的属性,如`mail.smtp.starttls.enable`。 ...

    JavaMail API Design Specification

    JavaMail API是Java平台上的一个强大工具,它为开发者提供了处理邮件系统交互的能力,包括发送、接收、管理邮件等。这篇博文将深入探讨JavaMail API的设计规范,帮助读者理解其核心概念和使用方法。 一、JavaMail ...

    JavaMail(JAVA邮件服务) API详解

    JavaMail API是Java平台上用于处理电子邮件的一套强大的库,它为开发者提供了丰富的功能,使得在应用程序中发送和接收邮件变得简单。本文将深入探讨JavaMail API的各个方面,帮助你理解和掌握这一关键工具。 首先,...

    JavaMail API

    总之,JavaMail API是Java开发者处理电子邮件的核心工具,掌握了它,你就能构建出功能强大的邮件系统,无论是简单的发送邮件,还是复杂的邮件管理,都能轻松应对。通过深入学习和实践,你将成为JavaMail API的专家,...

    JavaMail API详解.txt

    ### JavaMail API详解 #### 一、概述与背景 JavaMail API是用于处理电子邮件的一组...总之,JavaMail API是一个功能全面且易于使用的邮件处理工具,它极大地简化了在Java应用程序中实现邮件发送和接收功能的过程。

    JavaMail API核心类

    JavaMail API是Java平台上的一个标准接口,用于发送和接收电子邮件。它提供了丰富的类和接口,使得开发者可以方便地在应用程序中集成电子邮件功能。本文将深入探讨JavaMail API的核心类,帮助你理解如何利用这些类来...

    JavaMail API.pdf

    JavaMail API是一种基于Java的可选扩展包,用于读取、编写和发送电子消息,主要用于创建类似于Eudora、Pine或Microsoft Outlook这样的邮件用户代理(MUA)程序。MUA是直接与用户交互的邮件客户端程序,而不同于邮件...

Global site tag (gtag.js) - Google Analytics