`
hanjiangit
  • 浏览: 185445 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jmail收发邮件

SUN 
阅读更多

jmail收发邮件,发送邮件基于smtp协议,收邮件基于pop3协议,当然没有弄邮件服务器了,贴下代码,实在没什么好说的。

还有一点要记住smtp服务器的常用端口是25;pop3是110。

发邮件:

package wherever.zhj.mail;

import java.util.ArrayList;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
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 SMTPSendEmailBuilder
{
	private String smtpName = null;
	private String userName = null;
	private String password = null;

	public SMTPSendEmailBuilder(String smtpName, String userName, String password)
	{
		this.smtpName = smtpName;
		this.userName = userName;
		this.password = password;
	}
	
	public void sendEmail(EmailMessage emessage) throws MessagingException
	{
		Properties props = new Properties();
		props.put("mail.smtp.host", smtpName);// 指定SMTP服务器
		props.put("mail.smtp.auth", "true");// 指定是否需要SMTP验证
			Session mailSession = Session.getInstance(props,
					new Authenticator()
					{
						protected PasswordAuthentication getPasswordAuthentication()
						{
							return new PasswordAuthentication(userName,password);
						}	
					}
					);
			mailSession.setDebug(true);
			MimeMessage msg=new MimeMessage(mailSession);
			msg.setSentDate(emessage.getSendDate());
			msg.setSubject(emessage.getSubject());
			msg.setFrom(new InternetAddress(emessage.getFrom()));
			msg.setRecipients(RecipientType.TO,this.getArrayAddress(emessage.getRecipients()));
			MimeBodyPart textBodyPart=new MimeBodyPart();
			textBodyPart.setText(emessage.getContent());
			Multipart container=new MimeMultipart();
			container.addBodyPart(textBodyPart);
			if(emessage.isAttach())
			{
				for(String filePath : emessage.getAttachNames())
				{
					MimeBodyPart fileBodyPart=new MimeBodyPart();
					FileDataSource fds = new FileDataSource(filePath);
					fileBodyPart.setDataHandler(new DataHandler(fds));
					fileBodyPart.setFileName(fds.getName());
					container.addBodyPart(fileBodyPart);
				}
			}
			msg.setContent(container);
			Transport.send(msg); 
		}
	
	private Address[] getArrayAddress(ArrayList<String> listStr) throws AddressException
	{
		Address[] adds = new InternetAddress[listStr.size()];
		for (int i=0;i<listStr.size();i++)
		{
			adds[i] = new InternetAddress(listStr.get(i));
		}
		return adds;
	}
}

 收邮件:

package wherever.zhj.mail;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.FetchProfile;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;

public class POP3ReceiverEmailBuilder
{
	private Folder inbox = null;
	private Store store = null;
	private String popName = null;
	private String userName = null;
	private String password = null;

	public POP3ReceiverEmailBuilder(String popName, String userName, String password)
	{
		this.popName = popName;
		this.userName = userName;
		this.password = password;
	}

	/** 连接邮件服务器,获得所有邮件列表 */
	public ArrayList<EmailMessage> getMail() throws Exception
	{
		Properties prop = new Properties();
		prop.put("mail.pop3.host", popName);
		Session session = Session.getDefaultInstance(prop);
		session.setDebug(true);
		store = session.getStore("pop3");
		store.connect(popName, userName, password);
		inbox = store.getDefaultFolder().getFolder("INBOX");
		inbox.open(Folder.READ_ONLY);
		Message[] msg = inbox.getMessages();
		FetchProfile profile = new FetchProfile();
		profile.add(FetchProfile.Item.ENVELOPE);
		inbox.fetch(msg, profile);
		ArrayList<EmailMessage> listEMessage = new ArrayList<EmailMessage>();
		for (Message message : msg)
		{
			if (message.isMimeType("text/*"))
			{
				listEMessage.add(handleText(message));
			}
			else
			{
				listEMessage.add(handleMultipart(message));
			}
		}
		this.close();
		return listEMessage;
	}

	/** 处理文本邮件 */
	public EmailMessage handleText(Message msg) throws Exception
	{
		EmailMessage emessage = handle(msg);
		emessage.setContent(msg.getContent().toString());
		return emessage;
	}

	private ArrayList<String> getListString(Address[] arrayAddr)
	{
		ArrayList<String> listStr = new ArrayList<String>();
		for (Address str : arrayAddr)
		{
			listStr.add(str.toString());
		}
		return listStr;
	}

	private EmailMessage handle(Message message) throws MessagingException
	{
		EmailMessage emessage = new EmailMessage();
		emessage.setFrom(message.getFrom()[0].toString());
		emessage.setSendDate(message.getSentDate());
		emessage.setSubject(message.getSubject());
		emessage.setRecipients(getListString(message.getAllRecipients()));
		return emessage;
	}

	/** 处理非文本邮件 */
	private EmailMessage handleMultipart(Message msg) throws Exception
	{
		String disposition;
		BodyPart part;
		EmailMessage emessage = handle(msg);
		Multipart mp = (Multipart) msg.getContent();
		int mpCount = mp.getCount();// Miltipart的数量,用于除了多个part,比如多个附件
		for (int m = 0; m < mpCount; m++)
		{
			part = mp.getBodyPart(m);
			disposition = part.getDisposition();
			if (disposition != null && disposition.equals(Part.ATTACHMENT))// 判断是否有附件
			{
				emessage.setAttach(true);
				emessage.addAttachs(part.getInputStream());
				emessage.addAttachNames(part.getFileName());
			}
			else
			{
				emessage.setContent(part.getContent().toString());
			}
		}
		return emessage;
	}

	/** base64解码 */
	private String base64Decoder(String s) throws Exception
	{
		sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
		byte[] b = decoder.decodeBuffer(s);
		return (new String(b));
	}

	/** 关闭连接 */
	public void close() throws Exception
	{
		if (inbox != null)
		{
			inbox.close(false);
		}
		if (store != null)
		{
			store.close();
		}
	}
}

 还有个javabean:

package wherever.zhj.mail;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;

/**邮件对象*/
public class EmailMessage
{
	private String subject = null;
	private String from = null;
	private ArrayList<String> recipients = new ArrayList<String>();//收件人集合
	private Date sendDate = null;
	private String content = null;
	private ArrayList<InputStream> attachs = new ArrayList<InputStream>();//附件集合
	private boolean isAttach = false; //是否有附件
	private ArrayList<String> attachNames = new ArrayList<String>(); //附件名字

	public ArrayList<String> getAttachNames()
	{
		return attachNames;
	}

	public void setAttachNames(ArrayList<String> attachNames)
	{
		this.attachNames = attachNames;
	}
	
	public void addAttachNames(String attachName)
	{
		this.attachNames.add(attachName);
	}

	public boolean isAttach()
	{
		return isAttach;
	}

	public void setAttach(boolean isAttach)
	{
		this.isAttach = isAttach;
	}

	public String getSubject()
	{
		return subject;
	}

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

	public String getFrom()
	{
		return from;
	}

	public void setFrom(String from)
	{
		this.from = from;
	}

	public ArrayList<String> getRecipients()
	{
		return recipients;
	}

	public void setRecipients(ArrayList<String> recipients)
	{
		this.recipients = recipients;
	}
	
	public void addRecipients(String recipient)
	{
		this.recipients.add(recipient);
	}

	public Date getSendDate()
	{
		return sendDate;
	}

	public void setSendDate(Date sendDate)
	{
		this.sendDate = sendDate;
	}

	public String getContent()
	{
		return content;
	}

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

	public ArrayList<InputStream> getAttachs()
	{
		return attachs;
	}

	public void addAttachs(InputStream attachs)
	{
		this.attachs.add(attachs);
	}

	public void setAttachs(ArrayList<InputStream> attachs)
	{
		this.attachs = attachs;
	}

}
分享到:
评论

相关推荐

    VC 利用Jmail收发邮件

    在【标题】和【描述】中提到的"利用Jmail发送邮件",是通过创建`jmail.MessageClass`对象来实现的。以下是一些关键步骤: 1. **初始化邮件对象**:`jmail.MessageClass oJmailMessage = new jmail.MessageClass();`...

    利用Jmail发送邮件:

    #### 发送邮件 在提供的代码片段中,主要涉及了如何使用Jmail库来实现邮件的发送功能。Jmail是一个强大的.NET类库,用于开发支持SMTP、POP3协议的应用程序。下面将详细介绍其中的一些关键技术点。 1. **初始化Jmail...

    jmail发送邮件

    本文将基于给定的文件信息,深入解析使用JMail组件发送邮件的关键知识点,包括代码解读、配置参数、工作原理及注意事项。 ### JMail组件简介 JMail是一款功能强大的ASP邮件组件,它简化了电子邮件的发送过程,使得...

    jmail收发邮件控件

    **Jmail收发邮件控件**是一款用于在应用程序中实现邮件收发功能的组件,它基于OLE技术,允许开发者通过编程的方式轻松集成电子邮件功能。在本文中,我们将深入探讨Jmail控件的主要特点、功能、如何使用以及相关文档...

    asp.net中使用Jmail发送邮件

    Jmail是一个流行的组件,它为ASP.NET开发者提供了一种方便的方式来发送邮件。本文将深入探讨如何在ASP.NET中利用Jmail来实现邮件发送功能。 首先,Jmail是一个由DimiSoft公司开发的组件,它支持SMTP、POP3、IMAP等...

    vb jmail 发送邮件

    对于使用Visual Basic(VB)进行编程的开发者来说,利用第三方组件如jmail来发送邮件是一种高效且简便的方法。本文将深入解析如何使用jmail在VB环境中发送邮件,包括必要的环境配置、代码示例及其详细解释。 ### ...

    使用JMAIL收发邮件,附有JMAIL安装程序,JMAIL程序集及收发源码

    "使用JMAIL收发邮件,附有JMAIL安装程序,JMAIL程序集及收发源码"这一标签提示了这个资源包的完整性,它为开发者提供了一个完整的工作流程,方便快速上手邮件功能的开发。 总的来说,JMail是一个强大且易用的.NET...

    java jmail 发送邮件

    本教程将深入讲解如何使用Java JMail发送邮件,以及涉及的相关知识点。 1. **Java JMail基本概念** - **JavaMail API**: JavaMail API是Java平台上的一个标准API,用于处理电子邮件。它提供了与邮件服务器交互的...

    VFP利用JMAIL发送邮件及附件

    VFP利用JMAIL发送邮件及附件,纯代码,效果好VFP利用JMAIL发送邮件及附件,纯代码,效果好

    使用Jmail组件发送和接收邮件(含附件)

    使用JMail发送邮件主要包括以下几个步骤: 1. **配置SMTP服务器**:JMail需要知道SMTP服务器的信息,包括服务器地址、端口号、用户名和密码。这些信息可以在程序中以Properties对象的形式设置。 2. **创建Session...

    Jmail发送邮件系统源码_jmailsend.zip

    《Jmail发送邮件系统源码解析与应用》 在信息技术高速发展的今天,电子邮件已经成为企业和个人进行日常沟通的重要工具。为了实现高效、稳定的邮件发送功能,许多开发者选择利用邮件发送库来构建自己的邮件系统。...

    JMAIL收发邮件源代码及200多个ASP.NET中的控件使用源代码

    标题 "JMAIL收发邮件源代码及200多个ASP.NET中的控件使用源代码" 涉及的核心技术是JMAIL控件在ASP.NET环境下的应用,这是一款用于发送和接收电子邮件的组件。JMAIL提供了简单易用的接口,使得开发者能够方便地在ASP...

    Jmail发送邮件系统源码.zip

    《Jmail发送邮件系统源码解析与应用》 在IT领域,邮件系统是日常工作中不可或缺的一部分,用于传递信息、文件和进行自动化通信。Jmail是一款广泛使用的Java邮件发送库,它为开发者提供了方便的API接口,使得在Java...

    ASP使用Jmail发送邮件的函数及使用方法

    ### ASP使用Jmail发送邮件的函数及使用方法 在Web开发中,经常需要通过脚本语言来实现自动化发送邮件的功能,以满足用户注册、找回密码等业务需求。本文将详细介绍如何利用ASP(Active Server Pages)结合Jmail组件...

    JMAIL发送邮件

    ### JMAIL发送邮件知识点 #### 一、JMAIL概述 JMAIL是一款用于.NET环境下的电子邮件组件,它提供了简单易用的API接口,使得开发者能够轻松地实现邮件的发送功能。在本篇内容中,我们将详细介绍如何使用JMAIL组件在...

    Jmail 发送邮件 C#

    利用Jmail发送邮件,参考网上资料改良,在自己的程序中结合MS exchange多次使用,经过测试也可以适用于公共邮箱。

    jmail 发送邮件控件,支持winxp win200 win2003 版本4.3

    以下是一个简单的VB.NET示例,演示如何使用Jmail发送邮件: ```vbnet Imports JMail Dim j As New JMail j.From = "your_email@example.com" j.To = "recipient@example.com" j.Subject = "测试邮件" j.Body = "这...

    Jmail发送邮件系统源码

    【Jmail发送邮件系统源码】是一个基于ASP.NET平台的邮件发送系统,它允许开发者集成到自己的网站中,实现高效且可靠的电子邮件通信功能。这个系统的核心是Jmail组件,一个强大的SMTP邮件服务接口,能够帮助开发者...

Global site tag (gtag.js) - Google Analytics