`
江雨行
  • 浏览: 24324 次
文章分类
社区版块
存档分类
最新评论

邮件发送封装类

 
阅读更多
package com.yuxinglab.utils;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;

import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;


/**
 * 邮件发送工具类
 * 
 * @author yuxing
 * 
 */
public class EmailUtils {
	// 发件人邮箱服务器
	private String emailHost;
	// 发件人邮箱
	private String emailFrom;
	// 发件人用户名
	private String emailUserName;
	// 发件人密码
	private String emailPassword;
	// 收件人邮箱,支持多个邮箱,以";"分割
	private String toEmails;
	// 邮件主题
	private String subject;
	// 邮件内容
	private String content;
	// 邮件中的图片,key为图片Id,value为图片地址
	private Map<String, String> pictures;
	// 邮件中的附件,key为附件Id,value为附件地址
	private Map<String, String> attachments;

	public String getEmailHost() {
		if (null == emailHost || emailHost.trim().equals("")) {
			return "";
		}
		return emailHost.trim();
	}

	public void setEmailHost(String emailHost) {
		this.emailHost = emailHost;
	}

	public String getEmailFrom() {
		if (null == emailFrom || emailFrom.trim().equals("")) {
			return "";
		}
		return emailFrom;
	}

	public void setEmailFrom(String emailFrom) {
		this.emailFrom = emailFrom;
	}

	public String getEmailUserName() {
		if (null == emailUserName || emailUserName.trim().equals("")) {
			return "";
		}
		return emailUserName;
	}

	public void setEmailUserName(String emailUserName) {
		this.emailUserName = emailUserName;
	}

	public String getEmailPassword() {
		if (null == emailPassword || emailPassword.trim().equals("")) {
			return "";
		}
		return emailPassword;
	}

	public void setEmailPassword(String emailPassword) {
		this.emailPassword = emailPassword;
	}

	public String getToEmails() {
		if (null == toEmails || toEmails.trim().equals("")) {
			return "";
		}
		return toEmails;
	}

	public void setToEmails(String toEmails) {
		this.toEmails = toEmails;
	}

	public String getSubject() {
		if (null == subject || subject.trim().equals("")) {
			return "无主题"
					+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
							.format(new Date());
		}
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		if (null == content || content.trim().equals("")) {
			return "无正文"
					+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
							.format(new Date());
		}
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public Map<String, String> getPictures() {
		return pictures;
	}

	public void setPictures(Map<String, String> pictures) {
		this.pictures = pictures;
	}

	public Map<String, String> getAttachments() {
		return attachments;
	}

	public void setAttachments(Map<String, String> attachments) {
		this.attachments = attachments;
	}

	public void sendEmail() throws MessagingException {
		if (this.getEmailHost().equals("") || this.getEmailFrom().equals("")
				|| this.getEmailUserName().equals("")
				|| this.getEmailPassword().equals("")) {
			throw new RuntimeException("发信人信息配置不足,请确认");
		}
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
		// 设置邮件的发信服务器
		senderImpl.setHost(emailHost);
		MimeMessage message = senderImpl.createMimeMessage();
		// 建立邮件消息
		MimeMessageHelper messageHelper = new MimeMessageHelper(message, true,
				"utf-8");
		// 设置发信人邮箱
		messageHelper.setFrom(emailFrom);
		// 设置收信人邮箱
		String[] toEmailAddress = toEmails.split(";");
		List<String> toEmailList = new ArrayList<>();
		if (null == toEmailAddress || toEmailAddress.length < 1) {
			throw new RuntimeException("收信人邮箱为空!");
		} else {
			for (String address : toEmailAddress) {
				if (null != address && !address.trim().equals("")) {
					toEmailList.add(address);
				}
			}
			if (null == toEmailList || toEmailList.size() < 1) {
				throw new RuntimeException("收信人邮箱为空!");
			} else {
				toEmailAddress = new String[toEmailList.size()];
				for (int i = 0; i < toEmailList.size(); i++) {
					toEmailAddress[i] = toEmailList.get(i);
				}
			}
		}
		// 收信人数组
		messageHelper.setTo(toEmailAddress);
		// 发信主题
		messageHelper.setSubject(subject);
		// 支持HTML格式正文
		messageHelper.setText(content, true);
		// 添加图片
		if (null != pictures) {
			for (Iterator<Map.Entry<String, String>> it = pictures.entrySet()
					.iterator(); it.hasNext();) {
				Map.Entry<String, String> entry = it.next();
				String cid = entry.getKey();
				String filePath = entry.getValue();
				if (null == cid || null == filePath) {
					throw new RuntimeException("图片的ID和路径不全");
				}
				java.io.File file = new java.io.File(filePath);
				if (!file.exists()) {
					throw new RuntimeException("图片:" + filePath + "不存在");
				}
				FileSystemResource img = new FileSystemResource(file);
				messageHelper.addInline(cid, img);
			}
		}
		// 添加附件
		if (null != attachments) {
			for (Iterator<Map.Entry<String, String>> it = attachments
					.entrySet().iterator(); it.hasNext();) {
				Map.Entry<String, String> entry = it.next();
				String cid = entry.getKey();
				String filePath = entry.getValue();
				if (null == cid || null == filePath) {
					throw new RuntimeException("请确认每个附件的ID和地址是否齐全!");
				}

				java.io.File file = new java.io.File(filePath);
				if (!file.exists()) {
					throw new RuntimeException("附件" + filePath + "不存在!");
				}

				FileSystemResource fileResource = new FileSystemResource(file);
				messageHelper.addAttachment(cid, fileResource);
			}
		}
		Properties prop = new Properties();
		prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
		prop.put("mail.smtp.timeout", "25000");
		// 添加验证
		YuXingAuthenticator auth=new YuXingAuthenticator(emailUserName, emailPassword);
		Session session = Session.getDefaultInstance(prop, auth);
		senderImpl.setSession(session);

		// 发送邮件
		senderImpl.send(message);
	}
	public static void main(String[] args) throws Exception {  
        EmailUtils mu = new EmailUtils();  
        // test1(mu);  
        // test2(mu);  
        // test3(mu);  
        // test4(mu);  
        // test5(mu);  
        test1(mu);  
    }  
  
    public static void test1(EmailUtils mu) throws Exception {  
        String toEmails = "";  
   
        mu.setEmailFrom("");
        mu.setEmailHost("smtp.sina.com");
        mu.setEmailUserName("");
        mu.setEmailPassword("");
      
        
        
        String subject = "邮件";  
  
        Map<String, String> attachments = new HashMap<String, String>();  
        attachments.put("Hibernate3.1_DOC_CN",  
                "C:/Users/yuxing/Desktop/Hibernate3.1_DOC_CN.chm");  
  
        Map<String, String> pictures = new HashMap<String, String>();  
        pictures.put("d2", "C:/Users/yuxing/Desktop/QQ截图20140716165755.png");  
  
        StringBuilder builder = new StringBuilder();  
        builder.append("<html><body>图片展示<br />");  
        builder.append("<img src=\"cid:d2\" /><br />");  
        builder.append("</body></html>");  
        String content = builder.toString();  
  
        mu.setToEmails(toEmails);  
        mu.setSubject(subject);  
        mu.setContent(content);  
        mu.setPictures(pictures);  
        mu.setAttachments(attachments);  
  
        mu.sendEmail(); 
    }  
    	
}

 

package com.yuxinglab.utils;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/** 
 *  
 *  @author yuxing
 * @date 2012-5-8 下午2:48:25 
 */  
public class YuXingAuthenticator extends Authenticator {  
    private String username;  
    private String password;  
  
    /** 
     *  
     * @author geloin 
     * @date 2012-5-8 下午2:48:53 
     * @param username 
     * @param password 
     */  
    public YuXingAuthenticator(String username, String password) {  
        super();  
        this.username = username;  
        this.password = password;  
    }  
  
    protected PasswordAuthentication getPasswordAuthentication() {  
        return new PasswordAuthentication(username, password);  
    }  
}  

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    利用phpmail来发送邮件封装类

    本文将深入探讨如何利用PHPMailer来创建一个邮件发送封装类,并讨论其核心概念和使用方法。 首先,让我们了解PHPMailer的基本使用步骤: 1. **安装PHPMailer**:你可以通过Composer在项目中引入PHPMailer。在终端...

    利用phpmail来发送邮件封装类.zip

    本资源提供了一个基于PHPMailer的邮件发送封装类,方便开发者快速集成邮件发送功能。下面将详细讲解如何使用PHPMailer以及这个封装类。 PHPMailer是一个广泛使用的PHP邮件发送库,它支持SMTP协议,可以方便地通过...

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

    本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...

    发送邮件封装类源码

    总结来说,"发送邮件封装类源码"是一个方便开发者快速实现邮件发送功能的工具,它简化了与SMTP服务器的交互,使得邮件发送过程更加便捷。通过`SMailer`类的设计和`TestSMailer.cpp`的测试用例,我们可以深入理解邮件...

    邮件发送工具类

    这个“邮件发送工具类”显然已经过封装,方便开发者快速集成到自己的项目中,无需深入了解底层的邮件协议。下面将详细阐述邮件发送的相关知识点。 首先,我们来了解邮件发送的基本原理。电子邮件系统主要基于SMTP...

    一组实现邮件发送功能的C++封装类SMailer

    本篇文章将深入探讨"SMailer"这一C++封装类,它是用来实现邮件发送功能的。 首先,`SMailer`类很可能是基于SMTP(Simple Mail Transfer Protocol)协议设计的。SMTP是互联网上用于发送电子邮件的标准协议,允许用户...

    邮件发送工程类 封装了邮件发送

    本工程类“邮件发送”专注于提供一个高效、便捷的邮件发送解决方案,它封装了邮件发送和邮件模板功能,使得开发者能够轻松地集成到自己的项目中。 邮件发送通常基于SMTP(Simple Mail Transfer Protocol)协议进行...

    JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息)

    JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。

    javamail邮件发送工具类

    JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和...通过这些类的封装,可以使得邮件发送的代码更加简洁、易于维护。

    php发送邮件已经封装,用法已经注明

    为了简化这个过程,开发者通常会创建一个邮件发送类来封装相关的功能。这里的"php发送邮件已经封装,用法已经注明"的标题和描述提示我们,有一个已经完成的PHP邮件发送类,并且在类的注释中提供了使用方法。 邮件...

    邮件发送封装

    "邮件发送封装"指的是将邮件发送的过程进行模块化,通过创建一个或多个类来简化代码,便于复用和维护。本篇文章将深入探讨如何在Java中实现邮件发送,特别是支持群发和附件的功能。 首先,我们要引入JavaMail API,...

    PHP邮件发送类

    PHP邮件发送类就是封装了SMTP通信的代码,使得开发者无需深入了解SMTP协议的细节就能发送邮件。 在实际使用中,开发者需要配置SMTP服务器的地址、端口、用户名和密码,以及是否使用SSL/TLS加密。这些信息通常可以在...

    阿里巴巴邮件发送工具类

    阿里巴巴邮件发送工具类是Java开发中用于实现电子邮件发送功能的一个实用工具集,它简化了邮件发送过程,并且依赖于特定的库文件。这个工具类包括了`Email1688.java`和`MailModel.java`两个核心类,以及配置文件`...

    IOS打电话发短信发邮件的封装类

    别忘了在你的类中实现`MFMailComposeViewControllerDelegate`协议,以便处理邮件发送的结果。例如,用户可能取消发送或发送成功,这些情况都需要相应的处理。 以上就是关于在iOS应用中封装打电话、发短信和发邮件...

    java 发送邮件 小工具类+ mail.jar

    通过阅读和理解这个工具类的源代码,你可以更好地了解邮件发送的流程,并根据需要定制自己的邮件发送功能。 总之,Java发送邮件小工具结合JavaMail API提供了简单易用的邮件发送功能。无论是开发人员还是运维人员,...

    易语言源码JMAIL邮件发送模块源码.rar

    `邮件发送类.ec`是易语言的类库文件,它封装了与邮件发送相关的操作,提供了更高级别的接口,使得开发者可以更方便地进行邮件操作,而无需直接处理底层的SMTP通信细节。这通常包括创建邮件对象、添加附件、设置邮件...

    常规JavaMail 邮件发送实用类

    "常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...

    Spring Boot整合邮件发送并保存历史发送邮箱

    我们封装一个 MailService 类来实现普通的邮件发送方法。 Spring Boot整合邮件发送并保存历史发送邮箱 from,即为邮件发送者; to,邮件接收者; subject,邮件主题; content,邮件的主体。 邮件发送者 from ...

    腾讯邮件发送工具类

    【腾讯邮件发送工具类】是基于Java编程语言开发的一个实用工具,主要目的是简化通过腾讯邮箱发送邮件的过程。这个工具类通常包含了一系列方法,用于设置邮件的收件人、主题、正文,以及添加附件等操作。它可能依赖于...

Global site tag (gtag.js) - Google Analytics