基于 java mail包做的邮件发送客户端
发送客户端
package com.gbcom.protocol.mail;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.Logger;
/**
* 邮件发送客户端
* @author SYZ
* @date 2016-12-8 下午03:20:54
* @version 1.0.0
* @see com.gbcom.protocol.mail.MailSender
*/
public class MailSender {
public static final Logger logger =Logger.getLogger(MailSender.class);
private final Properties props;//仅构造函数可以赋值,其它只能读取,保证线程安全
private final String MAIL_SENDER_NAME;
private final String MAIL_SENDER_PASSWORD;
private final String MAIL_SENDER_ADDR;
private final Set<String> MAIL_RECEIVER_SET ;
private static final MailSender instance = new MailSender();
private MailSender(){
// 1.0 封装参数,从模板获取
props = new Properties();
props.put("mail.host", "smtp.163.com");//// 服务器地址
props.put("mail.smtp.port", "" + 25); // 端口号
props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
props.put("mail.smtp.auth", "true");
//自定义属性
Set<String> receiver = new HashSet<String>();
receiver.add("receivername@163.com");
MAIL_SENDER_NAME = "username";
MAIL_SENDER_PASSWORD = "passwd";
MAIL_SENDER_ADDR="username@163.com";
MAIL_RECEIVER_SET = receiver;
}
/**
* 获取单例
* @return MailSender
*/
public static MailSender getInstance(){
return instance;
}
public void sendMail(String subject,String content) throws MessagingException{
Message msg = buildDefaultMsg();
msg.setSubject(subject);// 设定信中的主题
msg.setSentDate(new Date());// 设定送信的时间
msg.setContent(content, "text/html;charset=utf-8");
msg.saveChanges();
//4.0发送
Transport.send(msg);
}
private Message buildDefaultMsg() throws MessagingException {
// 2.0 产生新的邮件Session 服务
SmtpAuthentic auth = new SmtpAuthentic(MAIL_SENDER_NAME, MAIL_SENDER_PASSWORD);
Session mailSession = Session.getInstance(props, auth);//带简单鉴权
mailSession.setDebug(true);////邮件打印
// 3.0 封装邮件Msg
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(MAIL_SENDER_ADDR));// 设定传送邮件的发信人
InternetAddress address = null;
for (String revAddress : MAIL_RECEIVER_SET) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setDataHandler(new javax.activation.DataHandler("alarm",
"text/html"));
return msg;
}
public void sendMail(String subject,String context,Set<String> files){
}
/**
* 发送邮件方法
*
*
* @param sendAddress
* : 发件人地址
* @param name
* : 发件人姓名
* @param password
* : 发件人密码
* @param emailServer
* : 发送的邮箱服务器地址 例smtp.163.com
* @param revAddresses
* : 收件箱地址
* @param title
* : 发送邮件的主题
* @param content
* : 发送邮件的内容 可以是超文本标记语言
* @throws MessagingException
* MessagingException
* @throws AddressException
* AddressException
*
*/
public static void sendSmtpEmail(String sendAddress, String name,
String password, String emailServer, String[] revAddresses,
String title, String content) throws AddressException,
MessagingException {
if (revAddresses == null || revAddresses.length == 0) {
return;
}
// 1.0 设置邮件协议属性
Properties props = new Properties();
props.put("mail.host", emailServer);//// 服务器地址
props.put("mail.smtp.port", "" + 25); // 端口号
props.put("mail.transport.protocol","smtp");// 暂时使用SMTP协议,可去掉
props.put("mail.smtp.auth", "true");
// 2.0 产生新的邮件Session 服务
// Session mailSession = Session.getDefaultInstance(props, auth);//不带鉴权
// 需鉴权,用户名及密码::用户名为@前的部分,如"pujing@gbcom.com.cn",用户名为:pujing
SmtpAuthentic auth = new SmtpAuthentic(name, password);
Session mailSession = Session.getInstance(props, auth);//带简单鉴权
mailSession.setDebug(true);////邮件打印
// 3.0 封装邮件Msg
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(sendAddress));// 设定传送邮件的发信人
// 设定传送邮件至收信人的信箱列表
InternetAddress address = null;
for (String revAddress : revAddresses) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setSubject(title);// 设定信中的主题
msg.setSentDate(new Date());// 设定送信的时间
// 可以发送超文本的邮件 html格式 第一个参数可以指定为任意字符串
// 设定传送信的MIME Type
msg.setDataHandler(new javax.activation.DataHandler("alarm",
"text/html"));
// content为发送的内容
msg.setContent(content, "text/html;charset=utf-8");
msg.saveChanges();
Transport.send(msg);
}
/**
* 发送邮件方法
*
* @param sendAddress
* : 发件人地址
* @param name
* : 发件人姓名
*
*
* @param password
* : 发件人密码
*
*
* @param emailServer
* : 发送的邮箱服务器地址 例smtp.163.com
* @param revAddresses
* : 收件箱地址
* @param title
* : 发送邮件的主题
* @param content
* : 发送邮件的内容 可以是超文本标记语言
* @param file
* : 发送邮件的附件
* @throws MessagingException
* MessagingException
* @throws AddressException
* AddressException
*
*/
public static void sendSmtpEmail(String sendAddress, String name,
String password, String emailServer, String[] revAddresses,
String title, String content, Vector<String> file)
throws AddressException, MessagingException {
if (revAddresses == null || revAddresses.length == 0) {
return;
}
// 设定所要用的Mail 服务器和所使用的传输协议
Properties props = new Properties();
props.put("mail.host", emailServer);
props.put("mail.smtp.auth", "true");
SmtpAuthentic auth = new SmtpAuthentic(name, password);
Session mailSession = Session.getInstance(props, auth);
boolean sessionDebug = false;
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(sendAddress));
InternetAddress address = null;
for (String revAddress : revAddresses) {
address = new InternetAddress(revAddress);
msg.addRecipient(Message.RecipientType.TO, address);
}
msg.setSubject(title);
msg.setSentDate(new Date());
// msg.setDataHandler(new
// javax.activation.DataHandler("alarm","text/html"));
// multipart
Multipart mp = new MimeMultipart();
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
mp.addBodyPart(mbpContent);
/* 往邮件中添加附件 */
Enumeration<String> efile = file.elements();
String fileName;
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
fileName = efile.nextElement().toString();
FileDataSource fds = new FileDataSource(fileName);
mbpFile.setDataHandler(new DataHandler(fds));
mbpFile.setFileName((fds.getName()));
mp.addBodyPart(mbpFile);
}
msg.setContent(mp);
msg.saveChanges();
Transport.send(msg);
}
/**
* @param args
*/
public static void main(String[] args) {
try {
for(int i=0;i<10;i++){
MailSender.getInstance().sendMail("hellow", "中国馆");
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
用户信息
package com.gbcom.protocol.mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 封装邮件用户信息
* @author SYZ
* @date 2016-12-8 下午03:23:08
* @version 1.0.0
* @see com.gbcom.protocol.mail.SmtpAuthentic
*/
public class SmtpAuthentic extends Authenticator {
/** Creates a new instance of Authentic */
public SmtpAuthentic() {
}
/**
*
* TODO description here
*
* @param name
* name
* @param password
* password
*/
public SmtpAuthentic(String name, String password) {
this.setUsername(name);
this.setPwd(password);
}
// username为发送邮箱@前面的部分
private String username = "";
// pwd为发送邮箱的密码
private String pwd = "";
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(getUsername(), getPwd());
}
/**
*
* TODO description here
*
* @return username
*/
public String getUsername() {
return username;
}
/**
*
* TODO description here
*
* @param username
* username
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
* TODO description here
*
* @return pwd
*/
public String getPwd() {
return pwd;
}
/**
*
* TODO description here
*
* @param pwd
* pwd
*/
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
mail的简单例子
分享到:
相关推荐
在Java编程语言中,设计一个简单的邮件发送客户端程序是一项常见的任务,这主要涉及到电子邮件的发送协议和技术,...总的来说,创建一个Java邮件发送客户端程序是一项涉及网络通信、用户交互和邮件处理技术的综合实践。
java实现的邮件收发系统,用swing开发了界面
3. **Session对象**: 使用Properties对象创建一个Session实例,它是邮件操作的上下文,包含了邮件发送的所有配置信息。 4. **Message对象**: 这是JavaMail API中的核心类,代表一封邮件。你可以通过Message对象设置...
JAVA简单邮件发送客户端程序设计
以上是实现Java邮件客户端的关键技术点。通过学习和实践这些内容,你将能够构建出一个功能完善的邮件系统客户端。在具体实践中,还要根据实际需求进行定制化开发,比如增加日历集成、联系人管理等功能,以满足不同...
在JAVA开发邮件客户端的过程中,涉及的关键技术和知识点相当广泛,涵盖了网络通信、邮件协议以及JAVA编程等多个领域。以下是对这些核心内容的详细解析: 1. **SMTP协议**:Simple Mail Transfer Protocol,简单邮件...
Java邮件客户端是使用Java编程语言实现的用于发送和接收电子邮件的应用程序。在Java中,我们主要依靠JavaMail API(Java Mail Application Programming Interface)来处理邮件的收发功能,包括附件的处理。JavaMail ...
易语言邮件发送客户端是一款基于易语言开发的程序,主要用于实现电子邮件的发送功能。这款客户端能够帮助用户通过编程的方式,方便快捷地发送邮件,是初学者和开发者学习邮件发送技术的一个实用工具。源码的开放性...
总的来说,实现一个Java邮件客户端涉及对SMTP协议的理解,以及熟练使用JavaMail API的各种组件。这个过程不仅需要编写发送邮件的代码,还可能需要处理邮件的接收、存储和显示,是一个涵盖网络通信、邮件格式和用户...
5. **邮件发送**:当用户完成邮件编写后,使用Transport类发送邮件,该类负责将Message对象通过SMTP协议传输到邮件服务器。 6. **邮件删除和移动**:用户可以选择删除或移动邮件到其他文件夹,这涉及到Folder对象的...
Java邮件客户端是一个基于Java编程语言实现的程序,它允许用户发送和接收电子邮件,包括嵌入的图片和附件。这个客户端的实现是通过JavaMail API来完成的,这是一个强大的开源库,专门为处理邮件通信而设计。JavaMail...
JAVA简单邮件发送客户端程序的设计说明.doc
总的来说,这个项目提供了一个基础的邮件发送功能,对学习JavaMail API和Java GUI编程非常有帮助。为了进一步扩展,你可以考虑添加接收邮件、支持IMAP协议、多线程发送、错误处理等功能,或者优化用户界面,使其更加...
在本文中,我们将深入探讨如何使用Java来创建一个基本的电子邮件客户端。首先,我们需要了解电子邮件的基本原理,电子邮件系统通常基于SMTP(Simple Mail Transfer Protocol)协议发送邮件,而使用IMAP(Internet ...
[计算机软件及应用]JAVA简单邮件发送客户端程序设计
在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并支持SSL(Secure Sockets Layer)和TLS(Transport Layer Security)安全协议。 SMTP是一种互联网标准,用于在...
在Android平台上开发一个邮件发送客户端是一项常见的任务,它允许用户通过应用程序发送电子邮件,而无需离开应用本身。在本例中,我们将关注如何实现一个能够利用Gmail、163和QQ邮箱服务进行邮件发送的客户端代码。...