`
assertmyself
  • 浏览: 29572 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

java邮件发送客户端

阅读更多
基于 java mail包做的邮件发送客户端

发送客户端
package com.gbcom.protocol.mail;

import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.Vector;

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

import org.apache.log4j.Logger;

/**
 * 邮件发送客户端
 * @author SYZ
 * @date 2016-12-8 下午03:20:54
 * @version 1.0.0
 * @see com.gbcom.protocol.mail.MailSender
 */
public class MailSender {

	public static final Logger logger =Logger.getLogger(MailSender.class);
	
	private final Properties props;//仅构造函数可以赋值,其它只能读取,保证线程安全
	private final String MAIL_SENDER_NAME;
	private final String MAIL_SENDER_PASSWORD;
	private final String MAIL_SENDER_ADDR;
	private final Set<String>  MAIL_RECEIVER_SET ;
	
	private static final MailSender instance = new MailSender();
	
	private MailSender(){
		// 1.0 封装参数,从模板获取
		props = new Properties();
		props.put("mail.host", "smtp.163.com");//// 服务器地址  
		props.put("mail.smtp.port", "" + 25); // 端口号  
		props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
		props.put("mail.smtp.auth", "true");
		
		//自定义属性
		Set<String> receiver = new HashSet<String>();
		receiver.add("receivername@163.com");
		MAIL_SENDER_NAME = "username";
		MAIL_SENDER_PASSWORD = "passwd";
		MAIL_SENDER_ADDR="username@163.com";
		MAIL_RECEIVER_SET = receiver;
	}
	
	/**
	 *  获取单例 
	 * @return MailSender
	 */
	public static MailSender getInstance(){
		return instance;
	}
	
	public void sendMail(String subject,String content) throws MessagingException{
		Message msg = buildDefaultMsg();
		msg.setSubject(subject);// 设定信中的主题
		msg.setSentDate(new Date());// 设定送信的时间
		msg.setContent(content, "text/html;charset=utf-8");
		msg.saveChanges();
		//4.0发送
		Transport.send(msg);
		
	}
	private Message buildDefaultMsg() throws MessagingException {
		// 2.0 产生新的邮件Session 服务
		SmtpAuthentic auth = new SmtpAuthentic(MAIL_SENDER_NAME, MAIL_SENDER_PASSWORD);
		Session mailSession = Session.getInstance(props, auth);//带简单鉴权
		mailSession.setDebug(true);////邮件打印
		
		// 3.0 封装邮件Msg
		Message msg = new MimeMessage(mailSession);
		msg.setFrom(new InternetAddress(MAIL_SENDER_ADDR));// 设定传送邮件的发信人
		InternetAddress address = null;
		for (String revAddress : MAIL_RECEIVER_SET) {
			address = new InternetAddress(revAddress);
			msg.addRecipient(Message.RecipientType.TO, address);
		}
		
		msg.setDataHandler(new javax.activation.DataHandler("alarm",
				"text/html"));
		return msg;
	}

	public void sendMail(String subject,String context,Set<String> files){
		
	}
	
	
	
	
	/**
	 * 发送邮件方法
	 * 
	 * 
	 * @param sendAddress
	 *            : 发件人地址
	 * @param name
	 *            : 发件人姓名
	 * @param password
	 *            : 发件人密码
	 * @param emailServer
	 *            : 发送的邮箱服务器地址 例smtp.163.com
	 * @param revAddresses
	 *            : 收件箱地址
	 * @param title
	 *            : 发送邮件的主题
	 * @param content
	 *            : 发送邮件的内容 可以是超文本标记语言
	 * @throws MessagingException
	 *             MessagingException
	 * @throws AddressException
	 *             AddressException
	 * 
	 */
	public static void sendSmtpEmail(String sendAddress, String name,
			String password, String emailServer, String[] revAddresses,
			String title, String content) throws AddressException,
			MessagingException {
		if (revAddresses == null || revAddresses.length == 0) {
			return;
		}

		// 1.0 设置邮件协议属性
		Properties props = new Properties();
		props.put("mail.host", emailServer);//// 服务器地址  
		props.put("mail.smtp.port", "" + 25); // 端口号  
		props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
		props.put("mail.smtp.auth", "true");

		// 2.0 产生新的邮件Session 服务
		// Session mailSession = Session.getDefaultInstance(props, auth);//不带鉴权

		// 需鉴权,用户名及密码::用户名为@前的部分,如"pujing@gbcom.com.cn",用户名为:pujing
		SmtpAuthentic auth = new SmtpAuthentic(name, password);
		Session mailSession = Session.getInstance(props, auth);//带简单鉴权
		mailSession.setDebug(true);////邮件打印
		
		// 3.0 封装邮件Msg
		Message msg = new MimeMessage(mailSession);
		msg.setFrom(new InternetAddress(sendAddress));// 设定传送邮件的发信人
		// 设定传送邮件至收信人的信箱列表
		InternetAddress address = null;
		for (String revAddress : revAddresses) {
			address = new InternetAddress(revAddress);
			msg.addRecipient(Message.RecipientType.TO, address);
		}

		
		msg.setSubject(title);// 设定信中的主题
		msg.setSentDate(new Date());// 设定送信的时间

		// 可以发送超文本的邮件 html格式 第一个参数可以指定为任意字符串
		// 设定传送信的MIME Type
		msg.setDataHandler(new javax.activation.DataHandler("alarm",
				"text/html"));

		// content为发送的内容
		msg.setContent(content, "text/html;charset=utf-8");
		msg.saveChanges();
		Transport.send(msg);
	}

	/**
	 * 发送邮件方法
	 * 
	 * @param sendAddress
	 *            : 发件人地址
	 * @param name
	 *            : 发件人姓名
	 * 
	 * 
	 * @param password
	 *            : 发件人密码
	 * 
	 * 
	 * @param emailServer
	 *            : 发送的邮箱服务器地址 例smtp.163.com
	 * @param revAddresses
	 *            : 收件箱地址
	 * @param title
	 *            : 发送邮件的主题
	 * @param content
	 *            : 发送邮件的内容 可以是超文本标记语言
	 * @param file
	 *            : 发送邮件的附件
	 * @throws MessagingException
	 *             MessagingException
	 * @throws AddressException
	 *             AddressException
	 * 
	 */
	public static void sendSmtpEmail(String sendAddress, String name,
			String password, String emailServer, String[] revAddresses,
			String title, String content, Vector<String> file)
			throws AddressException, MessagingException {
		if (revAddresses == null || revAddresses.length == 0) {
			return;
		}
		// 设定所要用的Mail 服务器和所使用的传输协议

		Properties props = new Properties();
		props.put("mail.host", emailServer);
		props.put("mail.smtp.auth", "true");
		SmtpAuthentic auth = new SmtpAuthentic(name, password);
		Session mailSession = Session.getInstance(props, auth);
		boolean sessionDebug = false;
		mailSession.setDebug(sessionDebug);
		Message msg = new MimeMessage(mailSession);
		msg.setFrom(new InternetAddress(sendAddress));
		InternetAddress address = null;
		for (String revAddress : revAddresses) {
			address = new InternetAddress(revAddress);
			msg.addRecipient(Message.RecipientType.TO, address);
		}
		msg.setSubject(title);
		msg.setSentDate(new Date());
		// msg.setDataHandler(new
		// javax.activation.DataHandler("alarm","text/html"));
		// multipart
		Multipart mp = new MimeMultipart();
		MimeBodyPart mbpContent = new MimeBodyPart();
		mbpContent.setText(content);
		mp.addBodyPart(mbpContent);

		/* 往邮件中添加附件 */
		Enumeration<String> efile = file.elements();
		String fileName;
		while (efile.hasMoreElements()) {
			MimeBodyPart mbpFile = new MimeBodyPart();
			fileName = efile.nextElement().toString();
			FileDataSource fds = new FileDataSource(fileName);
			mbpFile.setDataHandler(new DataHandler(fds));
			mbpFile.setFileName((fds.getName()));
			mp.addBodyPart(mbpFile);
		}
		msg.setContent(mp);

		msg.saveChanges();
		Transport.send(msg);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			for(int i=0;i<10;i++){
				MailSender.getInstance().sendMail("hellow", "中国馆");
			}
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
}


用户信息
package com.gbcom.protocol.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
 * 封装邮件用户信息
 * @author SYZ
 * @date 2016-12-8 下午03:23:08
 * @version 1.0.0
 * @see com.gbcom.protocol.mail.SmtpAuthentic
 */
public class SmtpAuthentic extends Authenticator {

	/** Creates a new instance of Authentic */
	public SmtpAuthentic() {

	}

	/**
	 * 
	 * TODO description here
	 * 
	 * @param name
	 *            name
	 * @param password
	 *            password
	 */
	public SmtpAuthentic(String name, String password) {
		this.setUsername(name);
		this.setPwd(password);
	}

	// username为发送邮箱@前面的部分

	private String username = "";

	// pwd为发送邮箱的密码
	private String pwd = "";

	@Override
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(getUsername(), getPwd());
	}

	/**
	 * 
	 * TODO description here
	 * 
	 * @return username
	 */
	public String getUsername() {
		return username;
	}

	/**
	 * 
	 * TODO description here
	 * 
	 * @param username
	 *            username
	 */
	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * 
	 * TODO description here
	 * 
	 * @return pwd
	 */
	public String getPwd() {
		return pwd;
	}

	/**
	 * 
	 * TODO description here
	 * 
	 * @param pwd
	 *            pwd
	 */
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

}


mail的简单例子
分享到:
评论

相关推荐

    JAVA简单邮件发送客户端程序设计.doc

    在Java编程语言中,设计一个简单的邮件发送客户端程序是一项常见的任务,这主要涉及到电子邮件的发送协议和技术,...总的来说,创建一个Java邮件发送客户端程序是一项涉及网络通信、用户交互和邮件处理技术的综合实践。

    java邮件收发客户端

    java实现的邮件收发系统,用swing开发了界面

    java实现一个邮件客户端

    3. **Session对象**: 使用Properties对象创建一个Session实例,它是邮件操作的上下文,包含了邮件发送的所有配置信息。 4. **Message对象**: 这是JavaMail API中的核心类,代表一封邮件。你可以通过Message对象设置...

    JAVA简单邮件发送客户端程序设计编程资料

    JAVA简单邮件发送客户端程序设计

    Java实现邮件客户端

    以上是实现Java邮件客户端的关键技术点。通过学习和实践这些内容,你将能够构建出一个功能完善的邮件系统客户端。在具体实践中,还要根据实际需求进行定制化开发,比如增加日历集成、联系人管理等功能,以满足不同...

    JAVA开发邮件客户端

    在JAVA开发邮件客户端的过程中,涉及的关键技术和知识点相当广泛,涵盖了网络通信、邮件协议以及JAVA编程等多个领域。以下是对这些核心内容的详细解析: 1. **SMTP协议**:Simple Mail Transfer Protocol,简单邮件...

    java收发邮件的客户端

    Java邮件客户端是使用Java编程语言实现的用于发送和接收电子邮件的应用程序。在Java中,我们主要依靠JavaMail API(Java Mail Application Programming Interface)来处理邮件的收发功能,包括附件的处理。JavaMail ...

    易语言邮件发送客户端

    易语言邮件发送客户端是一款基于易语言开发的程序,主要用于实现电子邮件的发送功能。这款客户端能够帮助用户通过编程的方式,方便快捷地发送邮件,是初学者和开发者学习邮件发送技术的一个实用工具。源码的开放性...

    JAVA邮件客户端实现

    总的来说,实现一个Java邮件客户端涉及对SMTP协议的理解,以及熟练使用JavaMail API的各种组件。这个过程不仅需要编写发送邮件的代码,还可能需要处理邮件的接收、存储和显示,是一个涵盖网络通信、邮件格式和用户...

    java版邮件客户端

    5. **邮件发送**:当用户完成邮件编写后,使用Transport类发送邮件,该类负责将Message对象通过SMTP协议传输到邮件服务器。 6. **邮件删除和移动**:用户可以选择删除或移动邮件到其他文件夹,这涉及到Folder对象的...

    java实现的邮件客户端

    Java邮件客户端是一个基于Java编程语言实现的程序,它允许用户发送和接收电子邮件,包括嵌入的图片和附件。这个客户端的实现是通过JavaMail API来完成的,这是一个强大的开源库,专门为处理邮件通信而设计。JavaMail...

    JAVA简单邮件发送客户端程序的设计说明.doc

    JAVA简单邮件发送客户端程序的设计说明.doc

    Java实现e-mail邮件客户端(仅支持发送邮件)

    总的来说,这个项目提供了一个基础的邮件发送功能,对学习JavaMail API和Java GUI编程非常有帮助。为了进一步扩展,你可以考虑添加接收邮件、支持IMAP协议、多线程发送、错误处理等功能,或者优化用户界面,使其更加...

    创建一个Java电子邮件客户端

    在本文中,我们将深入探讨如何使用Java来创建一个基本的电子邮件客户端。首先,我们需要了解电子邮件的基本原理,电子邮件系统通常基于SMTP(Simple Mail Transfer Protocol)协议发送邮件,而使用IMAP(Internet ...

    [计算机软件及应用]JAVA简单邮件发送客户端程序设计.doc

    [计算机软件及应用]JAVA简单邮件发送客户端程序设计

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并支持SSL(Secure Sockets Layer)和TLS(Transport Layer Security)安全协议。 SMTP是一种互联网标准,用于在...

    android邮件发送客户端代码

    在Android平台上开发一个邮件发送客户端是一项常见的任务,它允许用户通过应用程序发送电子邮件,而无需离开应用本身。在本例中,我们将关注如何实现一个能够利用Gmail、163和QQ邮箱服务进行邮件发送的客户端代码。...

Global site tag (gtag.js) - Google Analytics