`
xudongcsharp
  • 浏览: 467147 次
  • 性别: 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发送邮件

    利用javamail开发的邮件发送工具类 支持普通文本,html,抄送,密送,发送附件 zip中有jar,文档,工程

    JavaMail(5种不同的javamail)

    5种不同的javamail 1.无验证发送的Text格式Mail 2.有验证发送普通Text格式的mail 3.有验证方式 使用自定义的验证类,发送TEXT格式的Mail 4.发送带附件的mail测试Servlet 5.发送HTML格式的Mail

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    李兴华Java Web开发实战经典(高清版) Part2

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

    java web 视频、电子书、源码(李兴华老师出版)

    18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:...

Global site tag (gtag.js) - Google Analytics