最近因项目的需要,做了注册邮件验证的功能,所以整理了一下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邮件发送是一个常见的任务,尤其在自动化通知、用户...这个压缩包"Java邮件发送.zip"可能包含了实现以上功能的示例代码,供你参考和学习。通过理解和实践这些知识点,你可以熟练掌握在Java环境中发送邮件的方法。
Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...
这个“简易java邮件发送工具”显然是基于JavaMail API构建的,旨在简化邮件发送的过程,尤其针对Yahoo、Sina、Sohu和163等常见邮件服务商。用户无需登录到这些网站的网页界面,只需在拥有Tomcat或WebLogic等应用...
Java邮件发送客户端是一种利用JavaMail API开发的程序,它允许用户通过图形化的用户界面发送电子邮件。这个客户端可以作为个人或企业内部沟通的工具,也可以用于自动化邮件发送任务,例如发送通知、报告或订阅内容。...
Java邮件发送源码是Java开发者在进行自动化通信时经常需要用到的技术。邮件服务允许程序自动发送信息,例如通知、报告或客户服务交互,极大地提高了效率。在Java中,我们通常使用JavaMail API来实现这个功能。 ...
这个"JAVA邮件发送系统项目"提供了一个基础的实现,让你能够快速地进行定制和扩展以满足多样化的需求。 首先,我们来了解一下Java中发送邮件的基础知识。在Java中,我们可以使用JavaMail API来处理邮件发送。...
Java邮件发送是一个常见的任务,尤其在企业级应用中,用于发送通知、验证码或者报告等。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)或...
Java邮件发送是一个常见的任务,尤其在自动化通知、订阅服务或者数据报告等场景中。本教程将详细介绍如何使用Java实现邮件发送功能,同时提供了一个Jar包和demo源码供参考。 首先,我们需要理解JavaMail API,这是...
Java邮件发送是Java开发中的一项常见任务,它允许开发者通过编程方式向指定的电子邮箱地址发送消息。在Java中,这一功能主要通过JavaMail API来实现。JavaMail API是一个开源库,提供了丰富的类和接口,使得开发人员...
Java邮件发送技术是Java开发中一个实用且常见的功能,它允许开发者通过编程方式发送电子邮件,包括文本、HTML格式的正文以及附件。在本教程中,我们将深入探讨如何使用JavaMail API来实现邮件发送,特别是含附件的...
Java邮件发送是一个常见的任务,特别是在企业级应用中用于发送通知、确认信息或自动通信。Apache Commons Email库是Java中一个强大的工具,它简化了构建和发送电子邮件的过程。在这个例子中,我们将深入探讨如何使用...
JAVA邮件发送工具类(支持同步和异步发送邮件以及附件信息),支持多个抄送邮件发送。
Java邮件发送是一个常见的任务,尤其在自动化通知、报表发送或者用户服务中扮演着重要角色。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)...
Java邮件发送源码是用于在Java程序中实现电子邮件发送功能的代码示例。这个源码可能不包含图形用户界面(GUI),而是通过命令行或集成到其他应用中来执行。邮件发送功能通常基于SMTP(Simple Mail Transfer Protocol...
这里提到的两个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邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...
Java邮件发送是一个常见的任务,尤其在自动化通知、订阅服务或者数据传输中经常用到。这个“java邮件发送Demo”提供了一个实例,帮助开发者快速理解和应用Java进行邮件发送。以下是关于这个Demo的一些关键知识点: ...
根据提供的文件信息,本文将详细解析Java邮件发送功能在服务器上的部署注意事项以及代码中的关键知识点。 ### Java邮件发送功能概述 Java提供了强大的邮件处理能力,通过JavaMail API,开发人员可以方便地实现邮件...