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

用Java实现发送邮件到163

 
阅读更多
/*

 在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。

 本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。

 此篇仅介绍用javamail实现发送邮件功能,其中涉及smtp认证,邮件附件发送,及HTML内容邮件等。

 其它有关多邮箱的实现,接收POP3邮件及IMAP等内容,将在后续文章中介绍。

 如下程序需要:javamail,JAF包,j2ee.jar包含了上述两个包,建议大家安装J2SDKEE或直接拷贝j2ee.jar,将其添加到jbuilder的library中,或系统ClassPath中

 */

package com.tntxia.mymail;

import java.util.*;

import javax.mail.*;

import javax.mail.internet.*;

import java.util.Date;

import javax.activation.*;

import java.io.*;


public class sendMail {

	private MimeMessage mimeMsg; // MIME邮件对象

	private Session session; // 邮件会话对象

	private Properties props; // 系统属性

	private boolean needAuth = false; // smtp是否需要认证

	private String username = ""; // smtp认证用户名和密码

	private String password = "";

	private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

	/**

*

*/

	public sendMail() {

		// setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取

		createMimeMessage();

	}

	public sendMail(String smtp) {

		setSmtpHost(smtp);

		createMimeMessage();

	}

	/**
	 * 
	 * @param hostName
	 *            String
	 */

	public void setSmtpHost(String hostName) {

		System.out.println("设置系统属性:mail.smtp.host = " + hostName);

		if (props == null)
			props = System.getProperties(); // 获得系统属性对象

		props.put("mail.smtp.host", hostName); // 设置SMTP主机

	}

	/**
	 * 
	 * @return boolean
	 */

	public boolean createMimeMessage()

	{

		try {

			System.out.println("准备获取邮件会话对象!");

			session = Session.getDefaultInstance(props, null); // 获得邮件会话对象

		}

		catch (Exception e) {

			System.err.println("获取邮件会话对象时发生错误!" + e);

			return false;

		}

		System.out.println("准备创建MIME邮件对象!");

		try {

			mimeMsg = new MimeMessage(session); // 创建MIME邮件对象

			mp = new MimeMultipart();

			return true;

		}

		catch (Exception e) {

			System.err.println("创建MIME邮件对象失败!" + e);

			return false;

		}

	}

	/**
	 * 
	 * @param need
	 *            boolean
	 */

	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");

		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	public void setNamePass(String name, String pass) {

		username = name;

		password = pass;

	}

	/**
	 * 
	 * @param mailSubject
	 *            String
	 * 
	 * @return boolean
	 */

	public boolean setSubject(String mailSubject) {

		System.out.println("设置邮件主题!");

		try {

			mimeMsg.setSubject(mailSubject);

			return true;

		}

		catch (Exception e) {

			System.err.println("设置邮件主题发生错误!");

			return false;

		}

	}

	/**
	 * 
	 * @param mailBody
	 *            String
	 */

	public boolean setBody(String mailBody) {

		try {

			BodyPart bp = new MimeBodyPart();

			bp.setContent("" + mailBody, "text/html;charset=GB2312");

			mp.addBodyPart(bp);

			return true;

		}

		catch (Exception e) {

			System.err.println("设置邮件正文时发生错误!" + e);

			return false;

		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	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);

			return true;

		}

		catch (Exception e) {

			System.err.println("增加邮件附件:" + filename + "发生错误!" + e);

			return false;

		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	public boolean setFrom(String from) {

		System.out.println("设置发信人!");

		try {

			mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人

			return true;

		}

		catch (Exception e)

		{
			return false;
		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	public boolean setTo(String to) {

		if (to == null)
			return false;

		try {

			mimeMsg.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(to));

			return true;

		}

		catch (Exception e)

		{
			return false;
		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	public boolean setCopyTo(String copyto)

	{

		if (copyto == null)
			return false;

		try {

			mimeMsg.setRecipients(Message.RecipientType.CC,
					(Address[]) InternetAddress.parse(copyto));

			return true;

		}

		catch (Exception e)

		{
			return false;
		}

	}

	/**
	 * 
	 * @param name
	 *            String
	 * 
	 * @param pass
	 *            String
	 */

	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("mail.smtp.host"), username,
					password);

			transport.sendMessage(mimeMsg,
					mimeMsg.getRecipients(Message.RecipientType.TO));

			// transport.send(mimeMsg);

			System.out.println("发送邮件成功!");

			transport.close();

			return true;

		}

		catch (Exception e)

		{

			System.err.println("邮件发送失败!" + e);

			return false;

		}

	}

	/**
	 * 
	 * Just do it as this
	 */

	public static void main(String[] args) {

		String mailbody = "" + "csdn";

		sendMail themail = new sendMail("smtp.163.com");

		themail.setNeedAuth(true);

		if (themail.setSubject("标题") == false)
			return;

		if (themail.setBody(mailbody) == false)
			return;

		if (themail.setTo("tntxia@163.com") == false)
			return;

		if (themail.setFrom("tntxia@163.com") == false)
			return;

//		if (themail.addFileAffix("c:\\boot.ini") == false)
//			return;

		themail.setNamePass("********", "*********");   // 账号密码

		if (themail.sendout() == false)
			return;

	}

}

 

0
2
分享到:
评论

相关推荐

    java开发实现163邮件发送(支持附件

    下面将详细讲解如何使用Java实现这一功能。 1. **SMTP服务和JavaMail API** SMTP是互联网标准,用于发送电子邮件。163邮箱提供了SMTP服务器地址,开发者可以利用JavaMail API与这个服务器通信。JavaMail API是一个...

    java实现邮件发送(三种发送方式都有)

    在这个主题下,我们将探讨三种Java实现邮件发送的方式,以及如何通过提供的代码和参考资料进行实践。 首先,让我们了解一下基本概念。邮件发送主要涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office...

    java实现发送邮件功能源码+jar

    本教程将深入讲解如何使用Java实现邮件发送功能,并提供相关的源码和jar包。 1. **JavaMail API**: JavaMail API 是Java平台上用于处理电子邮件的主要库,它提供了一系列的接口和类,使得开发者能够方便地创建、...

    写java程序实现发邮件功能

    本篇文章将深入探讨如何使用Java编写程序来实现邮件的发送,包括发送纯文本邮件、带有附件的邮件、包含图片的邮件以及在邮件中显示图片。 首先,我们得知道JavaMail API是实现邮件发送功能的关键库。它提供了一系列...

    Java发送outlook邮件

    在发送Outlook邮件时,我们通常不是直接与Outlook交互,而是使用SMTP(Simple Mail Transfer Protocol)服务器,Outlook作为邮件客户端会连接到这个服务器来发送和接收邮件。 要使用JavaMail API,我们需要添加以下...

    java实现邮件发送

    ### Java实现邮件发送 本文将基于提供的描述及部分代码片段,详细介绍如何利用Java实现邮件发送功能。本教程涉及的关键知识点包括:配置邮件服务器、设置发件人与收件人信息、处理邮件验证以及附件的添加。 #### ...

    java实现发送邮件

    本教程将详细讲解如何使用Java实现发送邮件,包括发送图片和附件。 首先,你需要在项目中引入Java Mail API的相关依赖。通常我们使用Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...

    java实现邮件自动发送

    - 对于`mailFor163`,这通常涉及到使用网易163邮箱作为邮件服务器。163邮箱支持SMTP服务,你需要知道SMTP服务器地址(如smtp.163.com)和端口号(通常是25或465,SSL加密时为465)。 - 对于`mailForSina`,同理,...

    java实现发送邮件功能demo

    本文将深入探讨如何使用JavaMail API在Java应用程序中实现发送邮件的功能,同时也会涉及验证码验证以及网页版邮件发送的实现。 首先,要发送邮件,我们需要引入JavaMail的相关库。通常,这包括`javax.mail`和`javax...

    Java实现发送邮件.pdf

    ### Java实现发送邮件知识点详解 #### 一、引言 电子邮件是互联网中最为常见的通信方式之一,被广泛应用于用户激活、密码重置、营销推广等多个场景。为了满足自动化的需求,通常采用程序化的方式进行邮件的发送。...

    java实现发送邮件jar文件

    这个"java实现发送邮件jar文件"是JavaMail的一个实现,封装了SMTP(简单邮件传输协议)和其他相关协议,使得开发者能够轻松地集成邮件功能到他们的项目中。 在Java中实现邮件发送,首先需要引入JavaMail的相关依赖...

    java实现发送邮件功能

    本文将详细讲解如何使用Java实现发送邮件的功能,并基于给出的描述和标签,我们将深入探讨相关的JavaMail API及其使用方法。 首先,JavaMail API是Java平台上的一个开源库,它提供了一系列接口和类,用于处理邮件的...

    java发送邮件工具

    java发送邮件工具类,用于java程序实现邮件的发送功能

    简单Java邮件发送 Java实现邮件发送

    本教程将详细介绍如何使用Java实现邮件发送功能,同时提供了一个Jar包和demo源码供参考。 首先,我们需要理解JavaMail API,这是一个Java平台上的邮件处理库,它提供了发送和接收电子邮件的能力。JavaMail API 包含...

    Java实现发送emai

    使用JavaMailSender包,结合Java8和springboot框架,使用公司阿里企业邮箱免费发送邮件,因为公司邮件不限数量,所以邮件测试发送无上限。对于QQ或163邮箱账户可能需要开通SMTP服务,具体信息请百度教程,有问题可以...

    Java实现发送邮件内容+附件

    要实现“Java实现发送邮件内容+附件”,我们需要理解SMTP(Simple Mail Transfer Protocol)协议,并使用JavaMail API来创建和发送电子邮件。以下是一份详细的步骤和知识点解释: 1. **JavaMail API**:JavaMail ...

    java实现发送邮件,注册邮件激活账户

    本文将深入讲解如何使用Java实现发送邮件,并通过激活码激活账户的功能。 首先,我们需要理解JavaMail API是Java用来处理邮件的核心库。它提供了丰富的功能,包括创建、发送和接收邮件。在项目中,我们通常会引入`...

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

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

Global site tag (gtag.js) - Google Analytics