`
jchenzeke
  • 浏览: 1547 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用javaMail发送复杂邮件,支持附件发送

阅读更多

在javaMail中整个邮件是由一个一个的BodyPart组成的,每一个BoydPart的内容可以是简单的普通文本,或超文本,或是一个附件,也可以是复杂的一个Multipart,然后Multipart中又可以嵌套多个BodyPart和Multipart。

 

下面是使用javaMail构造一封复杂的邮件,并发送该邮件。

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
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;

public class Email4 {

	public static void main(String args[]) throws AddressException, MessagingException {
		
		Properties props = new Properties();
		//发送邮件的服务器
		props.setProperty("mail.smtp.host", "smtp.qq.com");
		//发送邮件的协议
		props.setProperty("mail.transport.protocol", "smtp");
		//在连接服务器的时候是否需要验证,发邮件是需要验证的
		props.setProperty("mail.smtp.auth", "true");
		//用户名
		final String username = "1111111111@qq.com";
		//密码
		final String password = "11111111111";
		
		//利用上述的用户名和密码构造一个Authenticator对象,并把它给Session,
		//当需要进行验证的时候,会自动从Session中去取该Authenticator对象
		Authenticator authenticator = new Authenticator() {

			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				// TODO Auto-generated method stub
				return new PasswordAuthentication(username, password);
			}
			
		};
		//利用上述提供给系统的属性和Authenticator构造一个Session对象
		Session session = Session.getInstance(props, authenticator);
		//设为true,可以看到发送邮件的整个过程
		session.setDebug(true);
		//利用配好配置信息的Session新建一封邮件
		Message message = new MimeMessage(session);
		//设置邮件的发送者
		message.setFrom(new InternetAddress("111111111111@qq.com"));
		//邮件的主题
		message.setSubject("Sending Email Test!");
		Address[] recipients = InternetAddress.parse("*************@sohu.com");
		//收邮件的人,如果有抄送,密送的,可以类似的设置,只是把RecipientType改为相应的类型
		message.setRecipients(RecipientType.TO, recipients);
		BodyPart part1 = new MimeBodyPart();
		BodyPart part2 = new MimeBodyPart();
		BodyPart part3 = new MimeBodyPart();
		BodyPart part4 = new MimeBodyPart();
		BodyPart part5 = new MimeBodyPart();
		//设置内容为html
		part1.setContent("<div style='font-size:large;font-weight:bold;color:red;height:50px;border:1px solid blue;'>HELLO WORLD;你好,世界</div>", "text/html;charset=utf-8");
		//设置内容为普通文本
		part2.setText("你好,Part2");
		//将一个bodyPart加到最前面
		part3.setText("Hello Part3");
		
		
		/**
		 * 发送一个附件的情况
		 */
		//设置附件
		//DataSource是对附件的封装,是一个接口,系统已经实现的子类有URLDataSource, DataHandlerDataSource, FileDataSource
		//里面封装了各种与附件有关的方法,包括获取附件的InputStream
		DataSource dataSource = new FileDataSource(new File("E:\\doc.sql"));
		//DataHandler是对DataSource的封装,可以把Stream转换为String,
		DataHandler dataHandler = new DataHandler(dataSource);
		part4.setDataHandler(dataHandler);
		//附件的名称,默认为content,如果文件名不加扩展名在进行附件下载的时候系统会不知道该附件是什么类型的附件,
		//这样在不清楚文件类型的情况下,文件有可能是打不开的
		part4.setFileName("doc.sql");
		
		/**
		 * 发送多个附件的情况
		 */
		Multipart attachments = new MimeMultipart();
		BodyPart attach1 = new MimeBodyPart();
		//设置附件1的内容
		DataSource dataSource_attach1 = new FileDataSource(new File("E:\\doc.sql"));
		DataHandler dataHandler_attach1 = new DataHandler(dataSource_attach1);
		attach1.setDataHandler(dataHandler_attach1);
		attach1.setFileName("attach1_doc.sql");
		BodyPart attach2 = new MimeBodyPart();
		//设置附件2的内容
		DataSource dataSource_attach2 = new FileDataSource(new File("E:\\doc.sql"));
		DataHandler dataHandler_attach2 = new DataHandler(dataSource_attach2);
		attach2.setDataHandler(dataHandler_attach2);
		attach2.setFileName("attach2_doc.sql");
		attachments.addBodyPart(attach1);
		attachments.addBodyPart(attach2);
		part5.setContent(attachments);
		
		Multipart multipart = new MimeMultipart();
		multipart.addBodyPart(part1);
		multipart.addBodyPart(part2);
		multipart.addBodyPart(part3,0);
		multipart.addBodyPart(part4);
		multipart.addBodyPart(part5);
		message.setContent(multipart);
		Transport.send(message);//发送
		
	}
	
}

 

抄送:http://haohaoxuexi.iteye.com/blog/1165703

 

分享到:
评论

相关推荐

    JavaMail发送邮件(文本、html、附件)

    这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、HTML和包含附件的邮件,以及在实际应用中需要注意的配置步骤。 1. *...

    javaMail学习(七)——使用javaMail发复杂邮件

    在使用 JavaMail 发送复杂邮件时,以下是一些关键知识点: 1. **配置 SMTP 服务器**:首先,我们需要设置 JavaMail Session 对象,指定 SMTP 服务器的属性,如主机名、端口号、用户名和密码。这通常通过 `...

    使用JavaMail发送复杂邮件源代码

    利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...

    JavaMail(3)——发送带附件的邮件.docx

    以上就是使用JavaMail发送带有附件的邮件的基本步骤。这个过程需要正确配置邮件服务器的属性,如SMTP服务器地址、端口、用户名和密码(如果需要身份验证)。`MailSenderInfo` 类通常会封装这些配置信息。 总的来说...

    使用javaMail发送邮件

    JavaMail还支持更复杂的功能,如HTML邮件、多部分邮件、使用IMAP/POP3接收邮件等。开发者可以根据具体需求选择相应的API来实现。通过阅读JavaMail的官方文档和参考示例代码,可以进一步了解和掌握这个强大的工具。

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    javamail发送邮件.zip

    JavaMail 是一个强大的开源...综上所述,这个项目涵盖了从客户端文件上传到服务器,再到使用JavaMail API构造和发送复杂邮件的完整流程。通过解压和研究提供的代码,开发者可以学习到如何在实际项目中实现类似的功能。

    用javaMail发送邮件

    以上就是使用JavaMail发送邮件的基本过程。在实际开发中,可能还需要处理更多复杂情况,如SSL/TLS加密、HTML邮件、多部分消息等。JavaMail API提供了丰富的功能来应对这些需求,让开发者能够灵活地构建邮件系统。 ...

    javaMail实现发送邮件的demo

    本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要导入 JavaMail 相关的库。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; &lt;artifactId&gt;...

    james和javamail实现邮件收发(带发送附件)

    JavaMail API支持MIME(多用途互联网邮件扩展)格式,这使得我们能够处理包括文本、图片、音频、视频以及各种其他类型在内的复杂邮件内容,包括附件。 下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件...

    使用JavaMail实现发送邮件

    不过,需要注意的是,使用JavaMail发送邮件时,必须确保你的SMTP服务器允许第三方应用程序进行授权,并且可能需要开启“不够安全的应用”的权限(对于Gmail而言)。 在提供的压缩包文件`Mail`中,可能包含了一些...

    使用javamail发送邮件

    除了基础的文本邮件,JavaMail 还支持发送 HTML 内容、附件、多部分消息等复杂邮件格式。例如,你可以使用 `MimeBodyPart` 和 `Multipart` 来创建包含 HTML 内容和附件的邮件。 总结来说,JavaMail API 提供了一套...

    利用JavaMail发送邮件的实例,可以直接运行

    8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("&lt;h1&gt;HTML邮件标题&lt;/h1&gt;&lt;p&gt;这是HTML邮件正文。&lt;/p&gt;", "text/html;charset=...

    android使用javamail发送邮件jar包

    3. **编写邮件发送代码**:下面是一个简单的示例,展示了如何使用JavaMail发送一封纯文本邮件: ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props.put(...

    jsp/servlet javamail 发送邮件 可发送多个附件

    2. **SMTP服务器配置**: 在使用JavaMail发送邮件时,首先需要配置SMTP服务器的相关信息,包括主机地址、端口号、用户名和密码。这些信息通常在应用的配置文件中定义,以便在程序运行时加载。 3. **MIME消息**: ...

    JavaMail发送带附件的邮件

    以上就是使用JavaMail发送带附件的邮件的基本流程。需要注意的是,实际应用中可能需要处理更多复杂情况,例如错误处理、SSL/TLS加密连接、多部分邮件(包含HTML内容和文本内容)等。同时,确保你有正确的SMTP服务器...

    用Java类实现JavaMail发送邮件的例子

    在这个例子中,我们将详细探讨如何使用JavaMail发送邮件,包括SMTP认证、添加附件以及发送HTML内容的邮件。 首先,为了使用JavaMail API,我们需要引入相应的库。在这个例子中,`javamail`和`JAF`(JavaBeans ...

    javamail发送、接收邮件

    代码中使用了`MimeMessage`、`MimeBodyPart`、`MimeMultipart`等类来构建邮件消息,同时通过`DataHandler`和`FileDataSource`来处理邮件附件。此外,还涉及到了邮件会话的配置和邮件发送过程。 值得注意的是,代码...

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    通过使用 JavaMail,开发者可以创建复杂的邮件,包括HTML 内容、附件、抄送和密送等功能。以下是一些核心的 JavaMail API 和概念: 1. **Session**:在 JavaMail 中,`Session` 类是邮件会话的代表,用于配置邮件...

Global site tag (gtag.js) - Google Analytics