`

java发邮件

 
阅读更多
/**
 * 邮件发送
 */
/**
 * @author 
 */
public class EmailServiceImpl {
	private String sendHost = null;// 发送服务器地址
	private String receiveHost = null;// 接受服务器地址
	private String user = null;// 邮件服务器账号
	private String password = null;// 邮件服务器账号密码
	private String from = null;// 来源地址
	
	
	/**
	 * 获得配置文件内容
	 * @author 
	 */
	public  void Proper() {
		Properties prop = new Properties();
		String file = this.getClass().getResource("/emailserver.properties").getFile();
		FileInputStream in = null;
		try {
			in = new FileInputStream(file);
			prop.load(in);
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		sendHost=prop.getProperty("emailserver.sendHost");
		receiveHost = prop.getProperty("emailserver.receiveHost");
		user=prop.getProperty("emailserver.user");
		password=prop.getProperty("emailserver.password");
		from=prop.getProperty("emailserver.from");
		//System.out.println(password);
		//System.out.println("==sendHost="+sendHost+"==receiveHost=="+receiveHost+"===user==="+user+"===password=="+password);
		
	}

	/**
	 * @return the sendHost
	 */
	public String getSendHost() {
		return sendHost;
	}

	/**
	 * @param sendHost
	 *            the sendHost to set
	 */
	public void setSendHost(String sendHost) {
		this.sendHost = sendHost;
	}

	/**
	 * @return the receiveHost
	 */
	public String getReceiveHost() {
		return receiveHost;
	}

	/**
	 * @param receiveHost
	 *            the receiveHost to set
	 */
	public void setReceiveHost(String receiveHost) {
		this.receiveHost = receiveHost;
	}

	/**
	 * @return the user
	 */
	public String getUser() {
		return user;
	}

	/**
	 * @param user
	 *            the user to set
	 */
	public void setUser(String user) {
		this.user = user;
	}

	/**
	 * @return the password
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password
	 *            the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	
	/* 发送邮件时是否进行身份验证 */
	private boolean authFlag = true;

	/* 发送邮件是否需要代理 */
	private boolean proxyFlag = false;
	/* 其他设置 */
	private boolean restFlag = false;
	
	/**
	 * 设置邮件发信人、收信人、抄送、密送、邮件标题、邮件内容、附件的文件名称(包括路径) 同时生成Session、Message,并且调用发送邮件
	 */
	public synchronized int sendEmailNow(String to,String cc,String subject, String body, String attchFile)

	{
		//System.out.println("hello");
		Proper();
		int successFlag = 0;
		int m_result;
		try {
			Properties props = System.getProperties(); // Properties用来将props传给MAIL
														
			Session session = null; // 创建Session对象

			props.put("mail.smtp.host", sendHost);
			if (authFlag) {
				props.put("mail.smtp.auth", "true");
			} else {
				props.put("mail.smtp.auth", "");
			}
			session = Session.getInstance(props, null);

			if (restFlag) {
				session.setDebug(true);
			}
			/** 创建邮件MESSAGE */
			Message mesg = new MimeMessage(session);
			InternetAddress[] addresses;

			/** from 地址列表 */
			if (!from.equals("")) {
				
				mesg.setFrom(new InternetAddress(from));
			} else {
				
					System.out.println("请填写发信人地址");
					return -2;
				
			}
			
			/** TO地址列表 */
			if (!to.equals("")) {
				addresses = InternetAddress.parse(to);
				mesg.setRecipients(javax.mail.Message.RecipientType.TO,
						addresses);
			//	mesg.setr
				//mesg.setr
			} else {
				System.out.println("请填写收信人地址");
				return -3;
			}
			/** CC地址列表 抄送*/
			if (cc!=null&&!cc.equals("")) {
				//wlog.userLog(cc);
				addresses = InternetAddress.parse(cc);
				
				mesg.setRecipients(javax.mail.Message.RecipientType.CC,
						addresses);
			}
			/** 设置邮件主题topic */
			if (!subject.equals("")) {
				mesg.setSubject(subject);
			} else {
				mesg.setSubject(subject);
				System.out.println("请填写邮件主题");
			}

			/** 设置邮件内容 */
			if (attchFile==null || attchFile.equals("")) {
				mesg.setContent(body, "text/html;charset=GBK");
				//mesg.setText(body);
			} else {
				Multipart mp = new MimeMultipart();
				MimeBodyPart mbp = new MimeBodyPart();

				mbp.setContent(body, "text/html;charset=GBK");
				mp.addBodyPart(mbp);
				/** 添加附件 */
				ArrayList attachlist = tokenize(attchFile);
				for (int i = 0; i < attachlist.size(); i++) {
					MimeBodyPart attachMbp = new MimeBodyPart();
					FileDataSource fds = new FileDataSource(
							(String) (attachlist.get(i)));
					attachMbp.setDataHandler(new DataHandler(fds));
					attachMbp.setFileName(MimeUtility.encodeText(fds.getName(),
							"GBK", "B"));
					attachMbp.setHeader("Content-Type", fds.getContentType());
					mp.addBodyPart(attachMbp);
				}
				mesg.setContent(mp);
			}
			/** 设置邮件发送时间 */
			mesg.setSentDate(new Date());
			/** 发送邮件 */
			if (authFlag) {
				Transport tr = session.getTransport("smtp");
				tr.connect(sendHost, user, password);
				mesg.saveChanges();
				tr.sendMessage(mesg, mesg.getAllRecipients());
				tr.close();
			} else {
				Transport.send(mesg);
			}
		}catch (MessagingException e) {/* send发送邮件的异常处理 */
			System.out.println("邮件发送失败!");
			successFlag=-9;
			e.printStackTrace();
		} catch (Exception e) {
			successFlag=-9;
			e.printStackTrace();
		}
		return successFlag;
	}
	
	private ArrayList tokenize(String s) {
		ArrayList arrayl = new ArrayList();
		for (StringTokenizer stringtok = new StringTokenizer(s, ","); stringtok
				.hasMoreTokens(); arrayl.add(stringtok.nextToken().trim()))
			;
		return arrayl;
	}
	String sendProtocol = "smtp";
	String receiveProtocol = "pop3";


	/**
	 * 覆盖方法 
	 */
	public boolean sendEmail(String to,String cc, String subject, String body,
			String attchFile) {
		int successflag=sendEmailNow(to,cc,subject,body,attchFile);
		if(successflag==0){
			return true;
		}else{
			return false;
		}
	}

}


配置文件:
emailserver.properties:
emailserver.sendHost=//邮箱服务器,比如163的:smtp.163.com
emailserver.receiveHost=//不填
emailserver.user=//发送邮件的用户名,该邮箱必须是emailserver.sendHost的邮箱
emailserver.password=//发送邮件的密码
emailserver.from=//同emailserver.user
发邮件需要的jar包:
 activation.jar,mail.jar

可能出现的异常:

Exception in thread "main" java.lang.NoClassDefFoundError:

com/sun/mail/util/LineInputStreams

 

原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:

在Myeclipse6.0.1中用rar打开X:/Program Files/MyEclipse 6.0/

myeclipse/eclipse/plugins/

com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/

data/libraryset/EE_5/

javaee.jar

在Myeclipse8.5中 D:/Program Files/MyEclipse 8.5/

Common/plugins/

com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033/

data/libraryset/EE_5/EE_5/javaee.jar ,然后删除mail,一切就ok了.

若删除的时候出错,则需要先在myeclipse里面删除掉引用了J2ee5.0的工程,

然后再关闭myeclipse再进行删除操作。

 

分享到:
评论

相关推荐

    java发邮件 java发email

    4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...

    java发邮件相关jar包

    在“java发邮件相关jar包”中,可能包含以下关键库: 1. **JavaMail API**: 这是Java用来处理邮件的核心库,包括`javax.mail`和`javax.mail.internet`这两个主要的包。它们提供了邮件协议(如SMTP、POP3、IMAP)的...

    java发邮件代码

    3. **创建Message对象**:使用Session对象创建一个Message实例,设置邮件的基本信息,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress...

    java 发邮件例子

    以下是一个基于`commons-email-1.1`库的Java发邮件实例: 首先,确保你的项目已经正确地引入了`commons-email`库。这通常通过Maven或Gradle的依赖管理来完成。如果你使用的是Maven,可以在`pom.xml`文件中添加以下...

    java发邮件完整以及各个邮箱的设置

    JavaMail是Java编程语言中用于发送和接收电子邮件的标准API,它是通过JavaMail API来实现的。这个API提供了与SMTP(简单邮件传输协议)服务器交互的能力,使得开发者可以在应用程序中轻松地发送邮件。在这个主题中,...

    java发邮件用到的jar包

    在本例中,"java发邮件用到的jar包"指的是用于处理电子邮件的Java类库。下面将详细解释如何使用这些jar包以及相关的知识点。 首先,JavaMail API是Java中处理邮件的核心库,它提供了发送和接收电子邮件的接口。为了...

    用java发邮件(保证秒懂)

    通过实例,用java发邮件,保证秒懂, Xmail xmail = new Xmail(); xmail.setUsername("/////@163.com"); //设置发件人邮箱名字 xmail.setPassword("*******"); //邮箱密码 xmail.setHost("smtp.163.com"); //...

    java 发邮件项目

    综上所述,"java 发邮件项目"涵盖的内容广泛,包括了邮件系统的配置、邮件对象的构建、网络通信以及异常处理等多个方面。通过这个项目,开发者可以学习到如何在Java环境中实现可靠且灵活的邮件发送功能。

    java发邮件所需架包

    在Java编程中,发送电子邮件是一项常见的任务,而这个“java发邮件所需架包”则包含了完成这项任务所需的两个关键库:activation和mail。这两个库是JavaMail API的一部分,提供了发送和接收电子邮件的功能。 首先,...

    java 发邮件带excel附件,以流的形式发送附件,不生成excel文件

    接下来,我们需要创建一个`MimeMessage`对象,并设置必要的邮件属性,如发件人、收件人、主题和正文。然后,我们将通过`MimeBodyPart`和`MimeMultipart`类来处理附件。 关键在于如何以流的形式创建Excel附件。我们...

    java发邮件 源码注释

    java发邮件

    java发邮件程序

    这个“java发邮件程序”的主题涵盖了JavaMail API的使用,它是Java平台上的标准邮件处理库。下面我们将深入探讨如何使用JavaMail API编写一个简单的邮件发送程序。 首先,你需要在项目中引入JavaMail相关的依赖。...

    java发邮件,亲测有效

    标签中的“java发邮件”指的是使用Java编程语言发送邮件。在Spring Boot项目中,我们可以引入`spring-boot-starter-mail`依赖来支持邮件服务。在Maven的pom.xml文件中,这可以通过添加以下代码实现: ```xml ...

    Java发邮件jar包

    这个Java发邮件jar包提供的功能可能更加强大,包括支持HTML邮件、添加附件、处理抄送和密送等功能。使用时,请参照官方文档或者提供的示例代码,结合自己的需求进行适当的调整。记住,始终遵循最佳实践,确保发送...

    java发邮件要用到的4个jar包

    当需要自动发邮件到制定的mail地址时,我们需要这4个jar包 注:如果jar包引用不当,则依然不能发邮件 使用步骤:1、先将jar包放入到ant%home%下的lib文件夹下,比如我的ant%home%是:D:\apache-ant-1.7.0\lib 2、...

    java 发邮件 多收件人 多抄送人 多附件

    java 发邮件工具类 多收件人 多抄送人 多附件 内有三个重载方法 使用方便

    java发邮件相关包

    "java发邮件包"可能包含以下核心库: 1. **javax.mail.jar**:这是Java Mail API的核心库,提供了邮件操作所需的所有接口和类。 2. **activation.jar**:JavaBeans Activation Framework (JAF)库,用于处理不同类型...

    Java 发邮件教程含示例代码

    Java 发邮件功能是Java应用程序与外部世界交互的重要方式之一,特别是在自动化通知、系统日志记录或者用户服务中。本文将详细介绍如何使用Java发送邮件,并提供示例代码。 首先,发送邮件需要依赖JavaMail API和...

    java发邮件注册

    "java发邮件注册"这个主题涉及到的是利用JavaMail API来实现通过电子邮件进行用户账户的激活过程。以下将详细介绍这一过程中的关键知识点。 首先,我们需要理解JavaMail API。这是一个用于处理邮件的开源库,它允许...

    java发邮件依赖jar包.zip

    在这个名为“java发邮件依赖jar包.zip”的压缩文件中,包含了两个关键的JAR文件:mail.jar和activation.jar,它们是JavaMail API的核心组成部分。 JavaMail API 是Java平台上的一个开源库,用于处理电子邮件相关的...

Global site tag (gtag.js) - Google Analytics