`

java 中发送邮件内容的各种基本生成方式

阅读更多
/*通过JAVAMail发送邮件步骤:
1 构建Session 实例
2 以Session 实例为参数构造MineMessage的空实例
3为 mineMessage 实例设置合适的属性和内容
4 使用抽象类Transprot 的send 或 sendMessage 方法发送邮件
在配置文件设置也行
MailSender 只能发送简单的,JavaMailSender  可以发送复杂的 
*/



简单文本内容方式:
package com.mail.main;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * @author xxxx 
 * @version 創建時間:Sep 26, 2009 2:22:39 PM
 * 類說明:
 */
public class TextMessage {

	/**
	 * @param args
	 * @throws MessagingException 
	 * @throws AddressException 
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
		// TODO Auto-generated method stub
		String from ="it315_test@sina.com";
		String to = "it315_test@sina.com";
		String subject ="test";
		String body ="This is a test  of text	mail";
		//创建Session 实例对象
		Session session = Session.getDefaultInstance(new Properties());
		//创建MimeMessage 实例对象
		MimeMessage msg =new MimeMessage(session);
		//设置发件人
		msg.setFrom(new InternetAddress(from));
		//to 
		msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
		//date
		msg.setSentDate(new Date());
		//subject
		msg.setSubject(subject);
		msg.setText(body);
		//保存最终生成的邮件内容
		msg.saveChanges();
		//把MIMEMessage 对象中的内容写到文件中
		msg.writeTo(new FileOutputStream("d:\\test.eml"));

	}

}

带图片的方式:
package com.mail.main;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
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;

/**
 * @author  xxxxxx
 * @version 創建時間:Sep 26, 2009 2:22:39 PM
 * 類說明:
 */
public class PictureMessage {

	/**
	 * @param args
	 * @throws MessagingException 
	 * @throws AddressException 
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
		// TODO Auto-generated method stub
		String from ="jsp_mail@sina.com";
		String to = "jsp_mail@sina.com";
		String subject ="test picture ";
//		String body ="<h4>This is a test  of HTML mail</h4><img src=\"http://www.it315.org/images/it315logo.gif\">";
//		String body ="<h4>This is a test  of HTML mail</h4><img src=\"88364.gif\">";
		String body ="<h4>This is a test  of HTML mail</h4><img src=\"cid:88364.gif\">";//为啥加cid 呢?表示引用Mime消息中Content-id属性值为88364.gif的消息体数据
		
		//创建Session 实例对象
		Session session = Session.getDefaultInstance(new Properties()); 
		//创建MimeMessage 实例对象,并设置各种邮件头字段
		MimeMessage msg =new MimeMessage(session);
		//设置发件人
		msg.setFrom(new InternetAddress(from));
		//to 
		msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
		
//		创建一个子类型为“related“的MimeMultipart 对象
		MimeMultipart multipart = new MimeMultipart("related");
		
		/*创建一个表示HTML正文的MimeBodyPart对象,并
		 * 将它加入到前面创建的MimeMultipart对象中
		 */
		MimeBodyPart htmlBodyPart = new MimeBodyPart();
		htmlBodyPart.setContent(body,"text/html;charset=gb2312");
		multipart.addBodyPart(htmlBodyPart);
		/*创建一个表示图片内容的MimeBodyPart对象,并
		 * 将它加入到前面创建的MimeMultipart对象中
		 */
		MimeBodyPart gifBodyPart =new MimeBodyPart();
//		gifBodyPart.setContent(arg0)
		FileDataSource fds =new FileDataSource("d:\\88364.gif"); //JAF 中的datesouce
		gifBodyPart.setDataHandler(new DataHandler(fds));
		gifBodyPart.setContentID("88364.gif");
		//下面这句也可以替换上句
//		gifBodyPart.setHeader("Content-ID", "88364.GIF");
//		gifBodyPart.setHeader("Content-Type", "image/gif'); //因为已经包含在JAF 中,不用包含此句
		multipart.addBodyPart(gifBodyPart);
		
		//date
		msg.setSentDate(new Date());
		//subject
		msg.setSubject(subject);
		
//		msg.setText(body);
		//设置HTML 格式的邮件正文
//		msg.setContent(body, "text/html;charset=gb2312"); 
		/*
		 * 将MimeMultipart对象设置为整个邮件的内容
		 */
		msg.setContent(multipart);
		//保存最终生成的邮件内容
		msg.saveChanges();
		//把MIMEMessage 对象中的内容写到文件中
		msg.writeTo(new FileOutputStream("d:\\testHTMLPicture.eml"));

	}

}



3 html 方式:
package com.mail.main;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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;

/**
 * @author xxxx
 * @version 創建時間:Sep 26, 2009 2:22:39 PM
 * 類說明:邮件发送程序实例
 */
public class HtmlMessageSender {
	String protocol ="smtp";
	String from ="it315_test@sina.com";
	String to = "it315_test@sina.com";
	String subject ="test picture welcome sender";
	String body ="<h4>This is a test  of HTML mail</h4><img src=\"../images/it315logo.gif\">";

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		
		String server = "smtp.sina.com.cn";
		String user = "it315_test"; //jsp_mail@sina.com
		String pass = "123456";
		HtmlMessageSender sender = new HtmlMessageSender();
		Session session =sender.createSession();
		MimeMessage message = sender.createMessage(session);
		//获取Transport 对象,并连接邮件服务器发送邮件
		Transport transport = session.getTransport();
		transport.connect(server, user, pass);
		transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
		transport.close();

	}
	public Session createSession() {
		Properties props =new Properties();
		props.setProperty("mail.transport.protocol", protocol);
		props.setProperty("mail.smtp.auth", "true");
		/*必须将mail.smtp.auth属性设置为true,SMTPTransport对象才会向
		SMTP服务器提交用户认证信息,这个信息可以从JavaMail的javadocs文档
		中的com.sun.mail.smtp包的帮助页面内查看到。
		*/
		Session session =Session.getDefaultInstance(props);
		session.setDebug(true);
		return session;
	}
	
	public MimeMessage createMessage(Session session) throws Exception, MessagingException{
		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(from));
		message.setRecipients(Message.RecipientType.TO,  InternetAddress.parse(to));
		message.setSubject(subject);
		MimeMultipart multipart = new MimeMultipart("related");
		
		MimeBodyPart htmlBodyPart = new MimeBodyPart();
	    htmlBodyPart.setContent(body,"text/html;charset=gb2312");
		multipart.addBodyPart(htmlBodyPart); 
		
		MimeBodyPart gifBodyPart = new MimeBodyPart();
		FileDataSource fds = new FileDataSource("d:\\88364.gif");
		gifBodyPart.setDataHandler(new DataHandler(fds));
		gifBodyPart.setContentID("it315_logo_gif");
		multipart.addBodyPart(gifBodyPart);
		
		message.setContent(multipart);
		message.saveChanges();
		return message;
			
	}
}



4 综合以上:
package com.mail.main;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * @author xxxx
 * @version 創建時間:Sep 27, 2009 2:12:28 PM
 * 類說明:内嵌图片和附件的mail
 */
public class ComplexMessage {

	/**
	 * @param args
	 * @throws MessagingException 
	 * @throws IOException 
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception, IOException, MessagingException {
		Session session = Session.getDefaultInstance(new Properties());
        MimeMessage message = createMessage(session);
        message.writeTo(new FileOutputStream("d:\\ComplexMessage.eml"));

	}
	public static MimeMessage createMessage(Session session) throws Exception
	{
		String from = "jsp_mail@sohu.com ";//发件人地址
        String to = "jsp_mail@sohu.com ";  //收件人地址
        String subject = "HTML邮件";        //邮件主题
        String body = "<a href=http://www.it315.org>" +
        			  "欢迎大家访问我们的网站</a></br>" +
				      "<img src=\"cid:it315_logo_gif\">"; 
      
        MimeMessage message = new MimeMessage(session);            
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO,
        		InternetAddress.parse(to));
        message.setSubject(subject);
        
        //创建代表邮件正文和附件的各个MimeBodyPart对象
        MimeBodyPart contentPart = createContent(body,"d:\\attach\\logo.gif");
        MimeBodyPart attachPart1 = createAttachment("d:\\attach\\daemon.exe");
        MimeBodyPart attachPart2 = createAttachment("d:\\attach\\sndrec.wav");
        
        //创建用于组合邮件正文和附件的MimeMultipart对象
        MimeMultipart allMultipart = new MimeMultipart("mixed");
        allMultipart.addBodyPart(contentPart);
        allMultipart.addBodyPart(attachPart1);
        allMultipart.addBodyPart(attachPart2);
        
        //设置整个邮件内容为最终组合出的MimeMultipart对象
        message.setContent(allMultipart);
        message.saveChanges();
        return message;
	}
	
	public static MimeBodyPart createContent(String body,String filename) 
														throws Exception
	{
        /* 创建代表组合MIME消息的MimeMultipart对象,
		和将该MimeMultipart对象保存到的MimeBodyPart对象 */
        MimeBodyPart contentPart = new MimeBodyPart();
        MimeMultipart contentMultipart = new MimeMultipart("related");
       
        /* 创建用于保存HTML正文的MimeBodyPart对象,
			并将它保存到MimeMultipart中 */
        MimeBodyPart htmlBodyPart = new MimeBodyPart();          
        htmlBodyPart.setContent(body,"text/html;charset=gb2312");
        contentMultipart.addBodyPart(htmlBodyPart); 
        
        /* 创建用于保存图片的MimeBodyPart对象,
			并将它保存到MimeMultipart中 */
        MimeBodyPart gifBodyPart = new MimeBodyPart();
        FileDataSource fds = new FileDataSource(filename);
        gifBodyPart.setDataHandler(new DataHandler(fds));
        gifBodyPart.setContentID("it315_logo_gif");
        contentMultipart.addBodyPart(gifBodyPart);
        
        //将MimeMultipart对象保存到的MimeBodyPart对象中
        contentPart.setContent(contentMultipart);
		return contentPart;
	}
	
	public static MimeBodyPart createAttachment(String filename) throws Exception
	{
		//创建保存附件的MimeBodyPart对象,并加入附件内容和相应信息
		MimeBodyPart attachPart = new MimeBodyPart();
        FileDataSource fds = new FileDataSource(filename);
        attachPart.setDataHandler(new DataHandler(fds));
        attachPart.setFileName(fds.getName());
		return attachPart;
	}
}
分享到:
评论

相关推荐

    java定时生成execl并发送邮件

    在Java编程领域,实现“java定时生成execl并发送邮件”的功能是一项常见的需求,尤其在自动化运维、数据报告和监控系统中。这个功能涉及到多个Java库和技术,包括Apache POI用于处理Excel文件,Quartz作为定时任务...

    java生成excle邮件附件发送

    java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送

    java 发邮件带excel附件,以流的形式发送附件,不生成excel文件

    在Java编程中,发送带有Excel附件的电子邮件是一项常见的任务,特别是在数据报告或自动化流程中。在某些场景下,我们可能希望直接以流的形式处理Excel数据,而不是先将其保存为一个实际的文件,然后再作为附件发送。...

    Java发送带模版的邮件示例

    JavaMail API提供了一种标准的方式来处理邮件的发送,而结合模板技术,我们可以创建出更加专业和美观的邮件内容。本示例将详细介绍如何在Java中使用模板发送邮件,以及相关的知识点。 首先,你需要了解JavaMail API...

    基于Java的邮件发送模板

    在Java开发中,发送邮件是一项常见的任务,尤其在企业级应用和服务中,它用于通知、确认订单、发送报告等。本篇文章将详细讲解如何利用Java实现邮件发送,并结合Apache的相关库来创建邮件发送模板,以提升效率和用户...

    Java 发送邮件,附件从流中读取,数据生成excel并输出到流中

    当有需求,需要把当天的报表文件发送给指定邮箱又不小生成多余的...实现过程是先将数据库里的数据,导出excel文件输出流中(注:不是直接生成文件),发送邮件时附件内容直接从前面excel文件输出流中获取,然后发送邮件

    java发送HTML模版邮件

    在Java编程环境中,发送HTML模板邮件是一项常见的任务,特别是在企业级应用中,用于发送美观、格式化的通知或营销信息。本项目提供了一个完整的Eclipse工程,包含必要的jar包,可以直接导入并运行,使得开发者能够...

    java使用javaMail发送邮件

    JavaMail 是一个强大的开源库,它为Java开发者提供了一套完整的API来处理电子邮件的发送和接收。这个项目源文件和包含的jar包是用于演示如何在Java应用中使用JavaMail来实现邮件服务功能的。下面将详细介绍JavaMail...

    Java通过内容模板发送邮件,支持附件

    在Java编程领域,发送邮件是一项常见的任务,尤其在企业级应用中,如自动通知、报告发送等场景。本文将深入探讨如何使用Java通过内容模板发送邮件,并支持附件功能。我们将基于给定的“Java通过内容模板发送邮件,...

    java发送邮件代码

    java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件

    JAVA发送邮件Demo

    此外,为了提高用户体验,可以考虑使用异步方式发送邮件,或者集成邮件模板来生成更复杂的邮件内容。 至此,我们已经掌握了使用Java发送邮件的基本知识,通过这个简短的`MaEmail`类和`main`方法,你可以快速测试...

    java实现模板邮件发送

    Java 实现模板邮件发送是一项常见的任务,特别是在企业级应用中,用于批量发送通知、报告或者验证码等。在本文中,我们将深入探讨如何使用Java来创建和发送带有模板的电子邮件。 首先,我们需要理解Java中用于邮件...

    java发送OutLook会议邮件

    Java发送Outlook会议邮件是一种常见的任务,特别是在自动化工作流程或者集成系统中。下面将详细介绍如何使用Java来实现这个功能。 首先,我们需要理解Outlook会议邮件实际上是一种特殊的邮件,它包含了会议的时间、...

    java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作

    JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件。它提供了丰富的API,使得开发者可以轻松地实现发送、接收和处理电子邮件的功能。本篇将深入讲解如何利用JavaMail发送复杂的格式邮件,包括HTML格式...

    JAVA 发送HTML格式并带图片的邮件实例

    在Java编程中,发送带有HTML格式和图片的邮件是一项常见的任务,这通常涉及到电子邮件API的使用,例如JavaMail API。以下是对这个主题的详细讲解: 首先,JavaMail API是Java平台上的一个开源库,用于处理电子邮件...

    JAVA自动发送网易邮件

    在Java编程环境中,发送电子邮件是一项常见的任务,尤其适用于自动化通知或者数据报告。本教程将详细介绍如何使用Java通过网易163邮箱服务器实现自动发送邮件的功能。以下内容将围绕标题和描述中的知识点展开。 ...

    java实现发送邮件功能demo

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

    java后台生成echarts图表

    然而,在某些场景下,我们可能需要在Java后台生成这些图表,而不是在前端直接渲染,比如用于报表生成、邮件发送或PDF文档嵌入等。 `echarts-java` 是一个专为 Java 开发者设计的工具库,它允许我们在 Java 后台生成...

    发送邮件+excel生成

    首先,让我们谈谈如何使用Java发送邮件。JavaMail API是Java平台用于处理邮件的标准API,它提供了一系列接口和类来创建、发送和接收邮件。以下是一个简单的邮件发送示例: 1. 引入JavaMail API库:在项目中添加...

    JAVA实现邮件发送.txt

    5. **异常处理**:在发送邮件过程中,可能会遇到各种异常情况,如网络问题、邮件服务器拒绝连接等,因此需要进行适当的异常处理,以确保程序的健壮性。 综上所述,Java实现邮件发送涉及到多个技术点,包括邮件会话...

Global site tag (gtag.js) - Google Analytics