<1>IMail 接口
import java.io.File;
import java.util.Date;
import java.util.List;
import javax.mail.BodyPart;
public interface IMail {
public void set主题(String 主题);
public void setText(String Text);
public void setCotnent(BodyPart content);
public void set发件人(Email地址 发件人);
public void set收件人(List<Email地址> 收件人);
public void set抄送人(List<Email地址> 抄送人);
public void set暗送人(List<Email地址> 暗送人);
public void set邮件时间(Date time);
public void set附件(List<File> files);
public Email地址 get发件人();
public List<Email地址> get收件人();
public List<Email地址> get抄送人();
public List<Email地址> get暗送人();
public List<File> get附件();
public Date get邮件时间();
public String get主题();
public String getText();
public BodyPart getContent();
}
<2>Mail类
import java.io.File;
import java.util.Date;
import java.util.List;
import javax.mail.BodyPart;
public class Mail implements IMail{
private Email地址 发件人;
private String 主题;
private String text;
private BodyPart content;
private List<Email地址> 抄送人;
private List<Email地址> 收件人;
private List<Email地址> 暗送人;
private Date 邮件时间 ;
private List<File> 附件;
public Email地址 get发件人() {
return this.发件人;
}
public List<Email地址> get抄送人() {
return this.抄送人;
}
public List<Email地址> get收件人() {
return this.收件人;
}
public List<Email地址> get暗送人() {
return this.暗送人;
}
public Date get邮件时间() {
return this.邮件时间;
}
public List<File> get附件() {
return this.附件;
}
public void set发件人(Email地址 发件人) {
this.发件人 = 发件人;
}
public void set抄送人(List<Email地址> 抄送人) {
this.抄送人 = 抄送人;
}
public void set收件人(List<Email地址> 收件人) {
this.收件人 = 收件人;
}
public void set暗送人(List<Email地址> 暗送人) {
this.暗送人 = 暗送人;
}
public void set邮件时间(Date time) {
this.邮件时间 = time;
}
public void set附件(List<File> files) {
this.附件 = files;
}
public BodyPart getContent() {
return this.content;
}
public String getText() {
return this.text;
}
public String get主题() {
return this.主题;
}
public void setCotnent(BodyPart content) {
this.content = content;
}
public void setText(String text) {
this.text = text;
}
public void set主题(String 主题) {
this.主题 = 主题;
}
}
<3>Abstract邮件发送服务器
import java.io.File;
import java.util.Date;
import java.util.List;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public abstract class Abstract邮件发送服务器 {
protected IMail 邮件;
protected Session session;
protected String send方式;
public Abstract邮件发送服务器() {
}
protected InternetAddress[] getAddressByType(List<Email地址> list) throws Exception {
if (list != null) {
InternetAddress address[] = new InternetAddress[list.size()];
for (int i = 0 ; i < list.size(); i++) {
address[i] = list.get(i).toInternetAddress();
}
return address;
}
return null;
}
public void 发送邮件() {
try {
MimeMessage message = new MimeMessage(session);
Multipart multipart = new MimeMultipart();
message.setSubject(邮件.get主题(),"utf-8");
if(邮件.getText() != null)
message.setText(邮件.getText(),"utf-8");
message.setSentDate(邮件.get邮件时间()==null?new Date():this.邮件.get邮件时间());
multipart.addBodyPart(this.邮件.getContent());
//添加发件人
message.setFrom(邮件.get发件人().toInternetAddress());
//添加收件人
InternetAddress address[] = this.getAddressByType(this.邮件.get收件人());
if (address != null)
message.addRecipients(Message.RecipientType.TO,address);
//添加抄送人
address = this.getAddressByType(this.邮件.get抄送人());
if (address != null)
message.addRecipients(Message.RecipientType.CC,address);
//添加暗送人
address = this.getAddressByType(this.邮件.get暗送人());
if (address != null)
message.addRecipients(Message.RecipientType.BCC,address);
//添加附件
if (this.邮件.get附件() != null) {
for (int i = 0; i < this.邮件.get附件().size(); i++) {
File file = this.邮件.get附件().get(i);
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(file);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(MimeUtility.encodeWord(file.getName(),"UTF-8","Q"));
multipart.addBodyPart(messageBodyPart);
}
}
message.setContent(multipart);
if(send方式 == null)
send方式 = "smtp";
session.getTransport(send方式).send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public IMail get邮件() {
return 邮件;
}
public void set邮件(IMail 邮件) {
this.邮件 = 邮件;
}
}
<4>Abstract发送邮件建造者
import javax.mail.Session;
public abstract class Abstract发送邮件建造者 {
protected Abstract邮件发送服务器 mailServer;
public Abstract发送邮件建造者() {
}
public abstract void 建造邮件(IMail mail);
public abstract void 建造邮件session(Session session);
public void 建造发送邮件() {
this.mailServer.发送邮件();
}
}
<5>Smtp邮件发送服务器
public class Smtp邮件发送服务器 extends Abstract邮件发送服务器 {
public Smtp邮件发送服务器() {
this.send方式 = "smtp";
}
}
<6>Smtp发送邮件建造者
import java.util.Properties;
import javax.mail.Session;
public class Smtp发送邮件建造者 extends Abstract发送邮件建造者 {
public Smtp发送邮件建造者() {
this.mailServer = new Smtp邮件发送服务器();
}
@Override
public void 建造邮件(IMail mail) {
this.mailServer.set邮件(mail);
}
@Override
public void 建造邮件session(Session session) {
this.mailServer.setSession(session);
}
}
<7>PasswordAuthenticator
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
class PasswordAuthenticator extends Authenticator {
private String username;
private String password;
public PasswordAuthenticator(String username, String password) {
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
<8>Email地址
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;
public class Email地址 {
protected String 地址;
protected String 地址显示别名;
public Email地址() {
}
public Email地址(String 地址, String 地址显示别名){
this.地址 = 地址;
this.地址显示别名 = 地址显示别名;
}
public String get地址() {
return 地址;
}
public void set地址(String 地址) {
this.地址 = 地址;
}
public String get地址显示别名() {
return 地址显示别名;
}
public void set地址显示别名(String 地址显示别名) {
this.地址显示别名 = 地址显示别名;
}
public InternetAddress toInternetAddress() throws Exception {
if (地址显示别名 != null && !地址显示别名.trim().equals("")) {
return new InternetAddress(地址, MimeUtility.encodeWord(地址显示别名,
"utf-8", "Q"));
}
return new InternetAddress(地址);
}
}
<9>发送邮件Director
import javax.mail.Session;
public class 发送邮件Director {
Abstract发送邮件建造者 build;
public 发送邮件Director(Abstract发送邮件建造者 build) {
this.build = build;
}
public void 发送邮件建造(IMail mail, Session session) {
this.build.建造邮件(mail);
this.build.建造邮件session(session);
this.build.建造发送邮件();
}
}
<10>Client
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Session;
import javax.mail.internet.MimeBodyPart;
public class Client {
public static void main(String args[]) throws Exception {
IMail mail = new Mail();
mail.set主题("제외되는");
mail.set发件人(new Email地址("james_zhao_abm@163.com","赵成明"));
List<Email地址> list = new ArrayList<Email地址>();
list.add(new Email地址("jszhaochengming@hotmail.com","刘德华"));
mail.set收件人(list);
list = new ArrayList<Email地址>();
list.add(new Email地址("james_zhao_abm@163.com","纯净水"));
list.add(new Email地址("jszhaochengming@hotmail.com","刘德华"));
mail.set抄送人(list);
BodyPart contentPart = new MimeBodyPart();
contentPart.setHeader("Content-Transfer-Encoding", "base64");
contentPart.setContent("测试哟见呵呵","text/html;charset=utf-8");
mail.setCotnent(contentPart);
List<File> listF = new ArrayList<File>();
listF.add(new File("d:/출주제외되는2.rar"));
mail.set附件(listF);
Smtp发送邮件建造者 smtp = new Smtp发送邮件建造者();
Properties 属性配置 = new Properties();
属性配置.put("mail.smtp.host", "smtp.163.com");
属性配置.put("mail.smtp.auth", "true");
Session session = Session.getInstance(属性配置,new PasswordAuthenticator("xxxxx", "xxxxx"));
发送邮件Director director = new 发送邮件Director(smtp);
director.发送邮件建造(mail, session);
}
}
分享到:
相关推荐
在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...
### Java Web应用开发 56 课堂案例-应用JavaMail组件发送邮件 #### 案例背景与目标 本案例旨在通过实际操作帮助学生掌握如何利用JavaMail组件在Java Web应用中实现邮件发送功能。JavaMail是Java平台的一个扩展,...
JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
### JAVA Web程序设计-3期(KC006) 13-1-2应用JavaMail组件发送邮件的操作步骤 #### 知识点概述 在本篇文档中,我们将深入探讨如何利用JavaMail组件实现电子邮件的发送功能。通过具体的学习步骤和实践案例,帮助...
http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-android-app的源码,已实现可发送邮件。
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这...
标签“java发送邮件”意味着此示例主要关注Java语言中发送邮件的功能,而“javamail邮箱发送”则表明我们利用JavaMail库来实现这一功能。这个过程涉及到Java网络编程和邮件协议的理解,如SMTP(简单邮件传输协议)和...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者能够轻松地处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在...
使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...
在Android平台上,使用JavaMail库发送邮件是一种常见的实践。JavaMail是一个开源的API,它提供了在Java环境中处理邮件的功能,包括发送、接收和管理电子邮件。在这个案例中,"LouisJavaMail-master"是一个项目仓库,...
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...
javaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+答辩PPT)(可做课程设计).rarjavaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+...
在Java编程中,发送电子邮件是一个常见的任务,通常通过JavaMail API来实现。JavaMail是一个开放源代码的API,它允许开发者在Java应用程序中处理邮件协议,如SMTP、POP3和IMAP。在这个例子中,我们将详细探讨如何...
geronimo-spec-javamail-1.3.1-rc3 java实现 发送mail工具包之一
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要...
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者可以方便地处理SMTP、POP3、IMAP等邮件协议。在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送...
JavaMail 是一个开源的 Java API,它允许开发者在 Java 应用程序中发送和接收电子邮件。这个入门教程将带你了解如何使用 JavaMail 来发送简单的文本邮件。在开始之前,你需要确保已经添加了 JavaMail 相关的库,这里...
JavaMail 是一个开源的Java库,它为Java应用程序提供了API,用于处理电子邮件的发送和接收。这个实例将向我们展示如何使用JavaMail API在Java中实现邮件发送功能。以下是详细的步骤和相关知识点: 1. **JavaMail ...