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

javaMail普通邮件发送、带附件邮件、Html格式邮件

    博客分类:
  • Java
 
阅读更多
package com.hp.mail;


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

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;

public class MailSender {
	private static final String charset = "utf-8";
	private static final String defaultMimetype = "text/plain";

	/**
	 * 单个邮件发送
	 * 
	 * @param receiver
	 *            收件人
	 * @param subject
	 *            标题
	 * @param mailContent
	 *            邮件内容
	 * @param mimetype
	 *            内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
	 */
	public static void send(Properties properties, String receiver,
			String subject, String mailContent, String mimetype) {
		if (receiver != null && !receiver.equals("")) {
			send(properties, new String[] { receiver }, subject, mailContent,
					mimetype);
		}

	}

	/**
	 * 批量邮件发送
	 * 
	 * @param receivers
	 *            收件人
	 * @param subject
	 *            标题
	 * @param mailContent
	 *            邮件内容
	 * @param mimetype
	 *            内容类型 默认为text/plain,如果要发0送HTML内容,应设置为text/html
	 */
	public static void send(Properties properties, String[] receivers,
			String subject, String mailContent, String mimetype) {
		send(properties, receivers, subject, mailContent, null, mimetype);
	}

	/**
	 * 批量邮件发送,添加附件
	 * 
	 * @param receivers
	 *            收件人
	 * @param subject
	 *            标题
	 * @param mailContent
	 *            邮件内容
	 * @param attachements
	 *            附件
	 * @param mimetype
	 *            内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
	 */
	public static void send(final Properties properties, String[] receivers,
			String subject, String mailContent, File[] attachements,
			String mimetype) {
		String smtpHost=(String) properties.get("email.hostname");
		Properties props = new Properties();
		props.put("mail.smtp.host", smtpHost);// smtp服务器地址
		props.put("mail.smtp.auth", "true");// 需要校验
		//针对gmail加密设置
		if(smtpHost.indexOf("smtp.gmail.com")>=0){
			props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
			props.put("mail.smtp.socketFactory.fallback", "false"); 
			props.put("mail.smtp.port", "465"); 
			props.put("mail.smtp.socketFactory.port", "465"); 
		}
		Session session = Session.getDefaultInstance(props,
				new Authenticator() {
					@Override
					protected PasswordAuthentication getPasswordAuthentication() {

						return new PasswordAuthentication(properties
								.getProperty("email.loginname"), properties
								.getProperty("email.loginpwd"));// 登录用户名/密码
					}
				});
		session.setDebug(true);
		try {
			MimeMessage mimeMessage = new MimeMessage(session);
			mimeMessage.setFrom(new InternetAddress(properties
					.getProperty("email.personal")));// 发件人邮件

			InternetAddress[] toAddress = new InternetAddress[receivers.length];
			for (int i = 0; i < receivers.length; i++) {
				toAddress[i] = new InternetAddress(receivers[i]);
			}
			mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);// 收件人邮件
			mimeMessage.setSubject(subject, charset);

			Multipart multipart = new MimeMultipart();
			// 正文
			MimeBodyPart body = new MimeBodyPart();
			// body.setText(message, charset);不支持html
			body.setContent(mailContent, (mimetype != null
					&& !"".equals(mimetype) ? mimetype : defaultMimetype)
					+ ";charset=" + charset);
			multipart.addBodyPart(body);// 发件内容
			// 附件
			if (attachements != null) {
				for (File attachement : attachements) {
					MimeBodyPart attache = new MimeBodyPart();
					attache.setDataHandler(new DataHandler(new FileDataSource(
							attachement)));
					String fileName = getLastName(attachement.getName());
					attache.setFileName(MimeUtility.encodeText(fileName,
							charset, null));
					multipart.addBodyPart(attache);
				}
			}
			mimeMessage.setContent(multipart);
			mimeMessage.setSentDate(new Date());
			Transport.send(mimeMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static String getLastName(String fileName) {
		int pos = fileName.lastIndexOf("\\");
		if (pos > -1) {
			fileName = fileName.substring(pos + 1);
		}
		pos = fileName.lastIndexOf("/");
		if (pos > -1) {
			fileName = fileName.substring(pos + 1);
		}
		return fileName;
	}

	public static void main(String[] args) {
		File[] file=new File[1];
		file[0]=new File("c://1234-IaaS-Storage.xml");
		
		Properties properties = new Properties();
		properties.put("email.hostname", "smtp3.hp.com");
		properties.put("email.loginname", "dong.xu2@hp.com");
		properties.put("email.loginpwd", "fit.map.ate-666");
		properties.put("email.personal", "dong.xu2@hp.com");
		MailSender.send(properties, new String[]{"itadm@g4t0606g.houston.hp.com"}, "IaaS Data Upload", "Test",file,"text/html");
		
	}

}
分享到:
评论

相关推荐

    javamail 邮件发送支持带有图片的html格式和普通文本格式

    ### JavaMail 发送支持带有图片的 HTML 格式和普通文本格式邮件 #### 概述 JavaMail API 是一个广泛使用的 Java 库,用于发送和接收电子邮件。它提供了丰富的功能来处理不同类型的邮件内容,包括纯文本、HTML 格式...

    javamail发邮件(带附件功能)

    根据提供的文件信息,本文将详细解释如何使用JavaMail在Java应用程序中发送电子邮件,包括带有附件的邮件发送功能。本文档将覆盖以下知识点: 1. JavaMail API简介 2. JavaMail配置与设置 3. 创建并发送普通邮件 4....

    java实现发送邮件(普通邮件和带附件)功能

    这个项目提供了完整的代码示例,演示了如何在Java程序中实现发送普通邮件以及带有附件的功能。以下是对这些功能的详细解释: 首先,发送普通邮件涉及到的主要接口是`javax.mail.Session`、`javax.mail.Transport`和...

    java实现邮件发送(三种发送方式都有)

    `普通邮件发送演示.java`应该展示了如何使用JavaMail API发送简单的文本邮件。JavaMail API是Java中用于处理电子邮件的标准库,包括了发送邮件、接收邮件等功能。要发送普通邮件,你需要设置SMTP服务器地址、端口、...

    javamail发送邮件

    这个工具类的实现使得开发者能够方便地处理各种邮件功能,如发送普通文本、HTML格式的邮件,以及进行抄送(CC)和密送(BCC)操作。同时,它还支持附件的添加,这对于需要发送文件或数据的场景非常实用。以下是对...

    javaMail电子邮件收发

    本教程将深入探讨如何使用JavaMail实现普通电子邮件以及带有附件的电子邮件的收发。 首先,要使用JavaMail,我们需要引入相关的依赖库,如`javax.mail`和`javax.mail-api`。这些库可以通过Maven或Gradle等构建工具...

    jsp源码+邮件发送

    3. **普通邮件发送**: 普通邮件通常指的是纯文本邮件,没有HTML格式和附件。使用JavaMail API,创建MimeMessage对象后,直接使用其setContent方法设置邮件正文。内容可以是简单的字符串,无需进行额外的格式化处理...

    java一键发送邮件,封装好的工具类

    4. **发送HTML邮件**:除了文本邮件,许多现代邮件系统支持HTML格式,`EasyEmailUtil`应有相应的方法允许开发者插入HTML代码作为邮件内容,以便实现更丰富的格式和样式。 5. **添加附件**:发送带有附件的邮件也是...

    JavaMail(5种不同的javamail)

    总结来说,JavaMail提供了丰富的API来支持各种邮件发送需求,包括但不限于简单的文本邮件、带验证的邮件、包含附件的邮件以及支持HTML格式的邮件。开发者可以根据实际需求选择合适的方法来实现邮件发送功能。

    spring结合javamail开发文档

    ### Spring结合JavaMail开发文档知识点...通过上述知识点的学习,开发者可以更加高效地利用Spring与JavaMail组合来实现邮件发送的功能,无论是简单的纯文本邮件还是复杂的HTML邮件甚至是带有附件的邮件都能轻松应对。

    基于 jsp 的邮件管理系统 及源码

    3. **普通邮件发送**:普通邮件发送是指仅包含纯文本内容的邮件。在JSP中,可以使用JavaMail API的`Message`对象设置邮件内容类型为"text/plain",然后将纯文本内容写入。这种格式的邮件简洁明了,适用于不需复杂...

    邮件发送系统

    这个系统不仅可以用于发送普通文本邮件,还可以处理带有附件、HTML内容和复杂格式的邮件,满足日常开发需求。在实际项目中,可以根据业务需求进行定制,例如添加日志记录、错误重试机制等,提升系统的稳定性和用户...

    java发送邮件

    以上就是使用JavaMail API发送普通邮件和带附件邮件的基本步骤。在实际开发中,可能还需要处理更多细节,如错误处理、HTML邮件、多语言支持等。在编写代码时,一定要注意处理可能出现的异常,并确保邮件发送的安全性...

    JavaMail技术

    你可以创建`SimpleEmail`或`MultiPartEmail`子类的对象来实现不同类型的邮件发送。 - **SimpleEmail**:用于发送纯文本邮件,不包含附件。 - **MultiPartEmail**:支持发送带有附件的邮件,`HtmlEmail`是其子类,...

    javamail工具包

    2. 附件:除了内嵌资源外,JavaMail还可以发送普通附件,例如Word文档、PDF文件等。只需创建一个新的MimeBodyPart,设置其数据源(DataSource接口实现)为文件,然后添加到MimeMessage。 四、源代码示例与学习资源 ...

    javamail复制可用

    JavaMail API为Java开发者提供了全面的邮件处理解决方案,无论是简单的文本邮件还是复杂的带附件邮件,都可以通过JavaMail高效、灵活地实现。掌握了JavaMail的核心概念和操作流程,开发者便能够在各种应用场景下自如...

    java mail 发送QQ邮件

    System.out.println("邮件发送成功!"); } catch (MessagingException e) { e.printStackTrace(); } } } ``` 以上就是使用Java Mail API发送QQ邮件的完整流程。通过这个例子,你可以了解如何配置SMTP服务器,...

    JAVAMAIL实例

    不仅可以发送普通的纯文本邮件,还可以发送带附件、HTML格式的邮件,并且支持SMTP认证以增加安全性。在实际开发过程中,可以根据具体需求灵活配置和使用JavaMail API,以满足不同的业务场景需求。

    发送普通文本格式的E-mail的java源码

    在Java编程环境中,发送普通文本格式的电子邮件是一个常见的任务,主要涉及到JavaMail API的使用。JavaMail API是一个开源库,允许开发者在Java应用程序中处理邮件的发送和接收。以下是一些关于如何使用Java发送普通...

    SMTP 邮件发送

    SMTP(Simple Mail Transfer Protocol)邮件发送是互联网上用于在邮件服务器之间传输电子邮件的标准协议。SMTP邮件发送涉及到多个步骤和技术,包括认证、连接、命令交互以及数据传输等。在这个过程中,通常会使用...

Global site tag (gtag.js) - Google Analytics