`

Java sendemail

    博客分类:
  • JAVA
阅读更多
jar  在下面自己下载
package org.mail;

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;

/**
 * 本程序用java来实现Email的发送,所用到的协议为:SMTP,端口号为25;<br>
 * 方法:用Socket进行实现,打开客户端的Socket,并连接上服务器:<br>
 * 如:Socket sockClient = new Socket("smtp.hanyastar.com",23);<br>
 * 这表示发件方连接的是QQ邮箱的服务器,端口号为23
 * 
 */
public class Email {
	/**
	 * 整个MIME邮件对象
	 */
	private MimeMessage mimeMsg;
	/**
	 * 专门用来发送邮件的Session会话
	 */
	private Session session;
	/**
	 * 封装邮件发送时的一些配置信息的一个属性对象
	 */
	private Properties props;
	/**
	 * 发件人的用户名
	 */
	private String username;
	/**
	 * 发件人的密码
	 */
	private String password;
	/**
	 * 用来实现附件添加的组件
	 */
	private Multipart mp;

	/**
	 * 发送参数初始化,有的服务器不需要用户验证,所以这里对用户名和密码进行初始化""
	 * 
	 * @param smtp
	 * SMTP服务器的地址,比如要用QQ邮箱,哪么应为:"smtp.hanyastar.com",163为:"smtp.163.com"
	 */
	public Email(String smtp) {
		username = "service@kssip.com";
		password = "mimabugaoshuini";
		// 设置邮件服务器
		setSmtpHost(smtp);
		// 创建邮件
		createMimeMessage();
	}

	/**
	 * 设置发送邮件的主机(JavaMail需要Properties来创建一个session对象。
	 * 它将寻找字符串"smtp.hanyastar.com",属性值就是发送邮件的主机);
	 * 
	 * @param hostName
	 */
	public void setSmtpHost(String hostName) {
		System.out.println("设置系统属性:smtp.exmail.qq.com = " + hostName);
		if (props == null)
			props = System.getProperties();
		props.put("mail.smtp.host", hostName);
	}

	/**
	 * (这个Session类代表JavaMail 中的一个邮件session. 每一个基于
	 * JavaMail的应用程序至少有一个session但是可以有任意多的session。 在这个例子中,
	 * Session对象需要知道用来处理邮件的SMTP 服务器。
	 */
	public boolean createMimeMessage() {
		try {
			System.out.println("准备获取邮件会话对象!");
			// 用props对象来创建并初始化session对象
			session = Session.getDefaultInstance(props, null);
		} catch (Exception e) {
			System.err.println("获取邮件会话对象时发生错误!" + e);
			return false;
		}
		System.out.println("准备创建MIME邮件对象!");
		try {
			// 用session对象来创建并初始化邮件对象
			mimeMsg = new MimeMessage(session);
			// 是否回执
			//mimeMsg.setHeader("Disposition-Notification-To","1");
			// 生成附件组件的实例
			mp = new MimeMultipart();
		} catch (Exception e) {
			System.err.println("创建MIME邮件对象失败!" + e);
			return false;
		}
		return true;
	}

	/**
	 * 设置SMTP的身份认证
	 */
	public void setNeedAuth(boolean need) {
		System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
		if (props == null) {
			props = System.getProperties();
		}
		if (need)
			props.put("mail.smtp.auth", "true");
		else
			props.put("mail.smtp.auth", "false");
	}

	/**
	 * 进行用户身份验证时,设置用户名和密码
	 */
	public void setNamePass(String name, String pass) {
		System.out.println("程序得到用户名与密码");
		username = name;
		password = pass;
	}

	/**
	 * 设置邮件主题
	 * 
	 * @param mailSubject
	 * @return
	 */
	public boolean setSubject(String mailSubject) {
		System.out.println("设置邮件主题!");
		try {
			mimeMsg.setSubject(mailSubject);
		} catch (Exception e) {
			System.err.println("设置邮件主题发生错误!");
			return false;
		}
		return true;
	}

	/**
	 * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
	 * 
	 * @param mailBody
	 * @return
	 */
	public boolean setBody(String mailBody) {
		try {
			System.out.println("设置邮件体格式");
			BodyPart bp = new MimeBodyPart();
			bp.setContent(
					"<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"
							+ mailBody, "text/html;charset=UTF-8");
			// 在组件上添加邮件文本
			mp.addBodyPart(bp);
		} catch (Exception e) {
			System.err.println("设置邮件正文时发生错误!" + e);
			return false;
		}
		return true;
	}

	/**
	 * 增加发送附件
	 * 
	 * @param filename
	 *            邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常 
	 * @return
	 */
	public boolean addFileAffix(String filename) {
		System.out.println("增加邮件附件:" + filename);
		try {
			BodyPart bp = new MimeBodyPart();
			FileDataSource fileds = new FileDataSource(filename);
			bp.setDataHandler(new DataHandler(fileds));
			// 发送的附件前加上一个用户名的前缀
			bp.setFileName(fileds.getName());
			// 添加附件
			mp.addBodyPart(bp);
		} catch (Exception e) {
			System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
			return false;
		}
		return true;
	}

	/**
	 * 设置发件人地址
	 * 
	 * @param from
	 *            发件人地址
	 * @return
	 */
	public boolean setFrom(String from) {
		System.out.println("设置发信人!");
		try {
			mimeMsg.setFrom(new InternetAddress(from));
		} catch (Exception e) {
			return false;
		}
		return true;
	}

	/**
	 * 设置收件人地址
	 * 
	 * @param to
	 *            收件人的地址
	 * @return
	 */
	public boolean setTo(String to) {
		System.out.println("设置收信人");
		if (to == null)
			return false;
		try {
			mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO,
					InternetAddress.parse(to));
		} catch (Exception e) {
			return false;
		}
		return true;
	}

	/**
	 * 发送附件
	 * 
	 * @param copyto
	 * @return
	 */
	public boolean setCopyTo(String copyto) {
		System.out.println("发送附件到");
		if (copyto == null)
			return false;
		try {
			mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,
					InternetAddress.parse(copyto));
		} catch (Exception e) {
			return false;
		}
		return true;
	}

	/**
	 * 发送邮件
	 * 
	 * @return
	 */
	public boolean sendout() {
		try {
			mimeMsg.setContent(mp);
			mimeMsg.saveChanges();
			System.out.println("正在发送邮件....");
			Session mailSession = Session.getInstance(props, null);
			Transport transport = mailSession.getTransport("smtp");
			// 真正的连接邮件服务器并进行身份验证
			transport.connect((String) props.get("service@kssip.com"),
					username, password);
			// 发送邮件
			transport.sendMessage(mimeMsg, mimeMsg
					.getRecipients(javax.mail.Message.RecipientType.TO));
			System.out.println("发送邮件成功!");
			transport.close();
		} catch (Exception e) {
			System.err.println("邮件发送失败!" + e.getMessage());
			e.printStackTrace();
			return false;
		}
		return true;
	}
}

测试类
package org.mail;

public class EmailTest{

	// subject 主题
	// bodyContent 内容
	// to 收件人 
	public static boolean sendMailForJavaByBoLun(String subject , String filename , String to){
		try{
			
			Email themail = new Email("smtp.exmail.qq.com");
			themail.setNeedAuth(true);
			themail.setSubject(subject);
			//themail.setBody(bodyContent);
			themail.addFileAffix(filename);
			themail.setTo(to);
			// 填写邮件发件人信息描述。
			themail.setFrom(new String("service@kssip.com"));
			// 填写发件人邮箱与密码
			themail.setNamePass("service@kssip.com", "mimabugaoshuini");
			if(themail.sendout())
				return true;
			else
				return false;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	public static void main(String[] args){
		
		sendMailForJavaByBoLun("Demon","C:/cdrbiao/downloadcdr.txt","1069897836@qq.com,19580882@qq.com");
		
	}
}


  • jar.rar (503.2 KB)
  • 下载次数: 2
分享到:
评论

相关推荐

    java 发送邮件 sendEmail

    Java发送邮件,通常涉及到JavaMail API的使用,这是一个强大的库,允许Java开发者通过SMTP(简单邮件传输协议)或ESMTP(扩展SMTP)发送和接收电子邮件。以下将详细讲解Java发送邮件的过程及其关键技术点。 首先,...

    使用JavaMail发送邮件的demo

    JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件通信。这个库提供了广泛的API,使得开发者能够方便地实现发送、接收、管理邮件等任务。在这个"使用JavaMail发送邮件的demo"中,我们将深入探讨如何...

    sendEmail.zip

    【标题】:“sendEmail.zip”是一个与Java编程相关的压缩包,其主要目的是教初学者如何在MyEclipse集成开发环境中实现QQ邮箱的电子邮件发送功能。这个压缩包包含了一个名为“sendEmail”的Java程序,用于演示如何...

    SendEmail,发送邮件

    5. **编程库/模块**:大多数编程语言都有现成的库或模块用于处理SMTP通信,例如Python的`smtplib`和`email`库,Java的`java.mail` API,或者Node.js的`nodemailer`库。 6. **SSL/TLS加密**:为了保护邮件内容不被...

    SendEmail.rar

    `SendEmail.rar`这个压缩包文件包含了一个用于发送邮件的Java应用示例,主要依赖于`mail.jar`库,该库支持SMTP(Simple Mail Transfer Protocol)协议,使得Java程序能够发送电子邮件。在Java中实现邮件发送功能,...

    java 定时 发送 信息类似于闹钟

    在Java编程中,实现定时发送信息的功能,可以利用Java的定时任务处理库,例如`java.util.Timer`类或`java.util.concurrent.ScheduledExecutorService`。这些工具可以帮助我们创建一个类似于闹钟的服务,按照预设的...

    SendEmail.java

    java编写的发送邮件工具类,实测可用,邮箱需获取授权码,具体步骤可自行百度(直接搜索qq邮箱授权码即可)

    sendemail 邮件发送

    标题提到的"sendemail 邮件发送"正是这样一个解决方案,它为Android提供了适应性的邮件发送服务,避免了使用Java Mail时可能出现的异常。 邮件发送在Android中的应用广泛,包括但不限于用户注册验证、系统通知、内...

    sendEmail发邮件

    发送邮件工具类的实现,并可上传图片、视频与文件。

    SendEmail.7z

    这个压缩包名为"SendEmail",暗示其核心内容可能是一个处理电子邮件发送的Java类或一个小型的Android库。 在Android Studio环境下,开发人员可以利用Java语言进行编程。JavaMail API是一个开源库,用于处理邮件服务...

    JAVA 在线发送邮件【QQ,网易】

    创建一个Java类,如`Java_SendEmail.java`,并实现以下功能: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class Java_SendEmail { public static void main...

    Java邮件开发工具类--EmailUtil(java源码)

    import java.util.List; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.Properties; import javax.mail.Session; import javax.mail.Transport; import javax....

    java发送邮件项目

    在实际项目中,通常会封装一个方法,如`sendEmail()`,接受必要的参数(如收件人邮箱、主题、正文等),并在内部完成上述步骤。在给定的项目中,这个方法应该已经实现并可以调用。 为了确保邮件发送的安全性,通常...

    java swing截图发送 电子邮件

    在Java编程领域,Swing是用于构建图形用户界面(GUI)的一个重要库,它提供了丰富的组件和工具来创建桌面应用程序。而电子邮件功能则涉及到网络通信和数据交换,通常使用JavaMail API来实现。本篇文章将深入探讨如何...

    java发送邮件代码SendMailEx

    它可能包含以下方法:`sendEmail(String from, String to, String subject, String content, String[] attachments)`,这个方法接受必要的参数,如发件人、收件人、主题、正文和附件列表,然后调用上述步骤完成邮件...

    消息邮件java接口使用说明

    在Java开发中,发送邮件是一项常见的任务,尤其在企业级应用中,用于通知、报告或者系统间通信。本文将详细讲解如何使用Java接口来实现消息邮件的发送。 首先,我们需要了解的是Java Mail API,这是一个开源的Java...

    java Email工具类

    Java Email工具类是Java开发中用于发送电子邮件的实用程序,主要涉及到JavaMail API。这个API提供了处理MIME协议的能力,使开发者能够构建复杂的邮件,包括文本、图片和附件。MIME(Multipurpose Internet Mail ...

    Java发送邮件简单示例

    在Java编程语言中,发送邮件是一项常见的任务,尤其在开发自动化通知、客户服务或者内部通信系统时。JavaMail API提供了一种标准的方式来实现这个功能。在这个简单的示例中,我们将探讨如何使用JavaMail发送电子邮件...

    mail_sendEmail_

    在标签"sendEmail"中,我们可以进一步推测这个话题涵盖了电子邮件协议(如SMTP)、电子邮件消息格式(如MIME)以及可能使用的编程语言或库,如Python的smtplib和email库,Java的JavaMail API,或者Node.js的...

Global site tag (gtag.js) - Google Analytics