`

java邮件的发送

阅读更多
最近因项目的需要,做了注册邮件验证的功能,所以整理了一下java简单的邮件发送,需要用的mail.jar 请自己在网上下载


一。定义一个封装邮件内容的类,代码如下

package net.bolue.mail;

/**
 * 简单邮件
 * @author bruisefree
 *
 */
public class SimpleMail {
	protected String subject;//邮件主题
	protected String content;//邮件内容
	
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
}



二,定义验证邮件的实体类,即用来验证邮件地址和密码是否可用

package net.bolue.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
 * 邮箱验证实体
 * @author bruisefree
 *
 */
public class MailAuthenticator extends Authenticator{
	/**
	 * 用户名(登录邮箱)
	 */
	private String username;
	/**
	 * 密码
	 */
	private String password;

	/**
	 * 初始化邮箱和密码
	 * 
	 * @param username
	 *            邮箱
	 * @param password
	 *            密码
	 */
	public MailAuthenticator(String username, String password) {
		this.username = username;
		this.password = password;
	}

	String getPassword() {
		return password;
	}

	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(username, password);
	}

	String getUsername() {
		return username;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public void setUsername(String username) {
		this.username = username;
	}

}





三。就是编写我们真正用来发送邮件的类
package net.bolue.mail;

import java.util.List;
import java.util.Properties;

import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMessage.RecipientType; 
/**
 * 发送邮件的类
 * @author Administrator
 *
 */
public class SimpleMailSender {
	/**
     * 发送邮件的props文件
     */
    private final transient Properties props = System.getProperties();
    /**
     * 邮件服务器登录验证
     */
    private transient MailAuthenticator authenticator;
  
    /**
     * 邮箱session
     */
    private transient Session session;
  
    /**
     * 初始化邮件发送器
     * 
     * @param smtpHostName
     *                SMTP邮件服务器地址
     * @param username
     *                发送邮件的用户名(地址)
     * @param password
     *                发送邮件的密码
     */
    public SimpleMailSender(final String smtpHostName,final String username,
        final String password) {
    	init(username, password, smtpHostName);
    }
  
    /**
     * 初始化邮件发送器
     * 
     * @param username
     *                发送邮件的用户名(地址),并以此解析SMTP服务器地址
     * @param password
     *                发送邮件的密码
     */
    public SimpleMailSender(final String username,final String password) {
	    //通过邮箱地址解析出smtp服务器,对大多数邮箱都管用
	    final String smtpHostName ="smtp."+ username.split("@")[1];
	    init(username, password, smtpHostName);
    }
  
    /**
     * 初始化
     * 
     * @param username
     *                发送邮件的用户名(地址)
     * @param password
     *                密码
     * @param smtpHostName
     *                SMTP主机地址
     */
    private void init(String username, String password, String smtpHostName) {
	    // 初始化props
	    props.put("mail.smtp.auth","true");
	    props.put("mail.smtp.host", smtpHostName);
	    // 验证
	    authenticator =new MailAuthenticator(username, password);
	    // 创建session
	    session = Session.getInstance(props, authenticator);
    }
  
    /**
     * 发送邮件
     * 
     * @param recipient
     *                收件人邮箱地址
     * @param subject
     *                邮件主题
     * @param content
     *                邮件内容
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(String recipient, String subject, Object content)  throws AddressException, MessagingException {
	    // 创建mime类型邮件
	    final MimeMessage message =new MimeMessage(session);
	    // 设置发信人
	    message.setFrom(new InternetAddress(authenticator.getUsername()));
	    // 设置收件人
	    message.setRecipient(RecipientType.TO,new InternetAddress(recipient));
	    // 设置主题
	    message.setSubject(subject);
	    // 设置邮件内容
	    message.setContent(content.toString(),"text/html;charset=utf-8");
	    // 发送
	    Transport.send(message);
    }
  
    /**
     * 群发邮件
     * 
     * @param recipients
     *                收件人们
     * @param subject
     *                主题
     * @param content
     *                内容
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(List<String> recipients, String subject, Object content)
        throws AddressException, MessagingException {
	    // 创建mime类型邮件
	    final MimeMessage message =new MimeMessage(session);
	    // 设置发信人
	    message.setFrom(new InternetAddress(authenticator.getUsername()));
	    // 设置收件人们
	    final int num = recipients.size();
	    InternetAddress[] addresses =new InternetAddress[num];
	    for(int i =0; i < num; i++) {
	        addresses[i] =new InternetAddress(recipients.get(i));
	    }
	    message.setRecipients(RecipientType.TO, addresses);
	    // 设置主题
	    message.setSubject(subject);
	    // 设置邮件内容
	    message.setContent(content.toString(),"text/html;charset=utf-8");
	    // 发送
	    Transport.send(message);
    }
  
    /**
     * 发送邮件
     * 
     * @param recipient
     *                收件人邮箱地址
     * @param mail
     *                邮件对象
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(String recipient, SimpleMail mail) throws AddressException, MessagingException {
    	send(recipient, mail.getSubject(), mail.getContent());
    }
  
    /**
     * 群发邮件
     * 
     * @param recipients
     *                收件人们
     * @param mail
     *                邮件对象
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(List<String> recipients, SimpleMail mail)
        throws AddressException, MessagingException {
    	send(recipients, mail.getSubject(), mail.getContent());
    }
  

}



好了,下面我们来写个测试类来发送邮件

package net.bolue.mail;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;

public class MailSendFactory {
	/** 
     * 服务邮箱 
     */
    private static SimpleMailSender serviceSms = null; 
  
    /** 
     * 获取邮箱 
     *  
     * @param type 邮箱类型 
     * @return 符合类型的邮箱 
     */
    public static SimpleMailSender getSender() {
	        if (serviceSms == null) {
	        serviceSms = new SimpleMailSender("wlf_service@163.com",   "123456"); 
	        } 
	        return serviceSms; 
    }
    
    
    public static void main(String[] args) throws AddressException, MessagingException{
    	SimpleMailSender mailSender = MailSendFactory.getSender();
    	SimpleMail mail = new SimpleMail();
    	mail.setContent("你可以收到邮件了");
    	mail.setSubject("邮件测试");
    	mailSender.send("czy.keith@qq.com", mail);
    }

}



好了可以成功收到短信了,在myeclipse下编写此功能的时候可能会无法成功,并且报错,如果发生错误可能是jar包冲突,那么你删除myeclipse下自带的mail功能的jar包即可
分享到:
评论

相关推荐

    Java邮件发送.zip

    Java邮件发送是一个常见的任务,尤其在自动化通知、用户...这个压缩包"Java邮件发送.zip"可能包含了实现以上功能的示例代码,供你参考和学习。通过理解和实践这些知识点,你可以熟练掌握在Java环境中发送邮件的方法。

    java邮件发送组件

    Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...

    简易java邮件发送工具

    这个“简易java邮件发送工具”显然是基于JavaMail API构建的,旨在简化邮件发送的过程,尤其针对Yahoo、Sina、Sohu和163等常见邮件服务商。用户无需登录到这些网站的网页界面,只需在拥有Tomcat或WebLogic等应用...

    java邮件发送客户端

    Java邮件发送客户端是一种利用JavaMail API开发的程序,它允许用户通过图形化的用户界面发送电子邮件。这个客户端可以作为个人或企业内部沟通的工具,也可以用于自动化邮件发送任务,例如发送通知、报告或订阅内容。...

    java 邮件发送源码

    Java邮件发送源码是Java开发者在进行自动化通信时经常需要用到的技术。邮件服务允许程序自动发送信息,例如通知、报告或客户服务交互,极大地提高了效率。在Java中,我们通常使用JavaMail API来实现这个功能。 ...

    JAVA邮件发送系统项目

    这个"JAVA邮件发送系统项目"提供了一个基础的实现,让你能够快速地进行定制和扩展以满足多样化的需求。 首先,我们来了解一下Java中发送邮件的基础知识。在Java中,我们可以使用JavaMail API来处理邮件发送。...

    java邮件发送

    Java邮件发送是一个常见的任务,尤其在企业级应用中,用于发送通知、验证码或者报告等。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)或...

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

    Java邮件发送是一个常见的任务,尤其在自动化通知、订阅服务或者数据报告等场景中。本教程将详细介绍如何使用Java实现邮件发送功能,同时提供了一个Jar包和demo源码供参考。 首先,我们需要理解JavaMail API,这是...

    Java邮件发送

    Java邮件发送是Java开发中的一项常见任务,它允许开发者通过编程方式向指定的电子邮箱地址发送消息。在Java中,这一功能主要通过JavaMail API来实现。JavaMail API是一个开源库,提供了丰富的类和接口,使得开发人员...

    java邮件发送(含附件发送)源码

    Java邮件发送技术是Java开发中一个实用且常见的功能,它允许开发者通过编程方式发送电子邮件,包括文本、HTML格式的正文以及附件。在本教程中,我们将深入探讨如何使用JavaMail API来实现邮件发送,特别是含附件的...

    java邮件发送例子 apache email demo

    Java邮件发送是一个常见的任务,特别是在企业级应用中用于发送通知、确认信息或自动通信。Apache Commons Email库是Java中一个强大的工具,它简化了构建和发送电子邮件的过程。在这个例子中,我们将深入探讨如何使用...

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

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

    java 邮件发送测试

    Java邮件发送是一个常见的任务,尤其在自动化通知、报表发送或者用户服务中扮演着重要角色。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)...

    java邮件发送源码

    Java邮件发送源码是用于在Java程序中实现电子邮件发送功能的代码示例。这个源码可能不包含图形用户界面(GUI),而是通过命令行或集成到其他应用中来执行。邮件发送功能通常基于SMTP(Simple Mail Transfer Protocol...

    java发送邮件相关jar包

    这里提到的两个jar包——`spring-context-support-4.1.7.RELEASE.jar`和`mail-1.4.1.jar`,都是Java邮件发送的重要组成部分。 `spring-context-support-4.1.7.RELEASE.jar`是Spring框架的一个扩展模块,主要提供了...

    java一键发送邮件,封装好的工具类

    本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...

    java邮件发送Demo

    Java邮件发送是一个常见的任务,尤其在自动化通知、订阅服务或者数据传输中经常用到。这个“java邮件发送Demo”提供了一个实例,帮助开发者快速理解和应用Java进行邮件发送。以下是关于这个Demo的一些关键知识点: ...

    java邮件发送文档的功能使用邮箱在服务器上部署需要注意

    根据提供的文件信息,本文将详细解析Java邮件发送功能在服务器上的部署注意事项以及代码中的关键知识点。 ### Java邮件发送功能概述 Java提供了强大的邮件处理能力,通过JavaMail API,开发人员可以方便地实现邮件...

Global site tag (gtag.js) - Google Analytics