`
tntxia
  • 浏览: 1484860 次
  • 性别: 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邮件发送(支持附件

    163邮箱发送(支持附件) 实现对url的访问是否正常,异常则发送到指定邮箱.

    写java程序实现发邮件功能

    压缩包中有纯java程序发送邮件其中有发送纯文本格式、带附件格式、图片格式、附件图片并显示格式。

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

    图文并茂邮件实现、普通邮件发送演示、带附件的邮件发送的源码以及编写时所参考的相关资料和大家分享一下!

    java实现发送邮件功能demo

    java 实现发送邮件功能,内含网页版发送邮件,校验验证码功能。希望能帮助大家

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

    实现简单的邮件发送功能,可以使用它实现邮箱验证功能,以及发送通知,代码简洁,使用方便,效率高效。

    java发送邮件工具

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

    Java实现发送emai

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

    Java实现发送邮件.pdf

    电子邮件的应用非常广泛,常见的如在某网站注册了...很显然这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。

    java实现邮件发送

    即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。 5、关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码...

    Java实现邮件发送

    Java实现邮件发送Java实现邮件发送Java实现邮件发送Java实现邮件发送Java实现邮件发送

    java实现发送邮件功能

    此代码实现了 如何用java程序发送邮件,注释很详细,此工程师maven工程

    Java实现邮件的加密发送

    Java课程设计 Java实现邮件的加密发送

    java实现发送邮件

    今天整理资料,就把java发送邮件的功能系统化了一下,里面可以发送图片和附件功能,3分钟可以看到效果的Demo里面有代码运行后效果图

    java实现邮件自动发送

    用java实现如何发送邮件,总共两个,都是源代码,拿着我的代码能直接运行的,其中一个可以打包的,可以在你们的程序里面直接打包使用。方便他人 方便自己

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

    Java实现发送邮件,工作需要自己查了各种资源完成,可以只发送内容+附件

    JAVA实现邮件发送.txt

    JAVA实现邮件发送.txt JAVA实现邮件发送.txt JAVA实现邮件发送.txt JAVA实现邮件发送.txt

    使用java发送邮件的方法

    使用java发送邮件的方法,直接可以拿来用,最近找了个例子,稍微整理了一下

    Java实现发送邮件

    java实现邮件发送,内有详细的注释,步骤详细,想要实现发送邮件的可以看一看。

    JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息)

    JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。

Global site tag (gtag.js) - Google Analytics