package javax.util.zz;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
import java.net.*;
import java.io.*;
/**
* <p>邮件发送类</p>
* <p>支持普通模式和HTML模式,可发送多个附件,支持SMTP服务器认证。<br>基于javamail开发,使用时请将javamail包含在classpath系统变量中。</p>
* <p><br>使用说明:</p>
* <p>Mail mail=new Mail();</p>
* <p>mail.setXXX ....</p>
* <p>mail.send();<br></p>
* @author
* @version 1.0
*/
public class Mail {
private Address[] to = null;
private Address[] cc = null;
private Address[] bcc = null;
private String from = "";
private String title = "";
private String content = "";
private String smtpHost = "";
private int smtpPort = 25;
private String content_type = MODE_TEXT;
private String htmlMailDesc = "";
private String smtpUser = "";
private String smtpPassword = "";
private boolean isAuthenticationSMTP = false;
private Vector vFiles = new Vector();
private Vector vURLs = new Vector();
public Mail() {
}
/**
* 设置SMTP服务器,使用默认端口
* @param server SMTP服务器IP
*/
public void setSmtpHost(String server) {
this.smtpHost = server;
}
/**
* 设置SMTP服务器
* @param server SMTP服务器IP
* @param port 端口
*/
public void setSmtpHost(String server, int port) {
this.smtpHost = server;
this.smtpPort = port;
}
/**
* 设置收件人地址
* @param aEmail 收件人Email地址
*/
public void setTo(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.to = getAddress(s);
}
/**
* 设置多个收件人地址
* @param Emails 收件人Email地址
*/
public void setTo(String[] Emails) {
this.to = getAddress(Emails);
}
/**
* 设置抄送地址
* @param aEmail 抄送地址
*/
public void setCC(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.cc = getAddress(s);
}
/**
* 设置多个抄送地址
* @param Emails 抄送地址
*/
public void setCC(String[] Emails) {
this.cc = getAddress(Emails);
}
/**
* 设置暗送地址
* @param Emails 暗送地址
*/
public void setBCC(String aEmail) {
String[] s = new String[1];
s[0] = aEmail;
this.bcc = getAddress(s);
}
/**
* 设置多个暗送地址
* @param Emails 暗送地址
*/
public void setBCC(String[] Emails) {
this.bcc = getAddress(Emails);
}
/**
* 设置发件人地址
* @param aEmail 发件人地址
*/
public void setFrom(String aEmail) {
// if(!isValidEmailAddress(aEmail)){
// throw new MyException("Invalid Email Address");
// }
this.from = aEmail;
}
/**
* 设置邮件主题
* @param mailTitle 邮件主题
*/
public void setSubject(String mailTitle) {
this.title = mailTitle;
}
/**
* 设置邮件文字内容
* @param mailContent 邮件文字内容
*/
public void setBody(String mailContent) {
this.content = mailContent;
}
/**
* 设置邮件字符类型
* @param contentType 请从静态变量TEXT和HTML中选择
*/
public void setContentType(String contentType) {
this.content_type = contentType;
}
/**
* 设置HTML格式邮件在一般模式下显示的说明
* @param desc 说明文字
*/
public void setHtmlMailDesc(String desc) {
this.htmlMailDesc = desc;
}
/**
* 设置SMTP服务器用户认证
* @param username 用户名
* @param password 密码
*/
public void setSmtpAuthentication(String username, String password) {
this.smtpUser = username;
this.smtpPassword = password;
this.isAuthenticationSMTP = true;
}
/**
* 添加附件
* @param afile 本地文件
*/
public void addAttachment(File afile) {
vFiles.add(afile);
}
/**
* 添加附件
* @param fileURL 文件URL
*/
public void addAttachment(URL fileURL) {
vURLs.add(fileURL);
}
/**
* 标示邮件是否附带附件
* @return
*/
public boolean hasAttachment() {
return vFiles.size() + vURLs.size() > 0;
}
/**
* 发送邮件
*/
public void send() {
try {
Properties server = new Properties();
if (StringUtil.isEmpty(this.smtpHost)) {
throw new NullPointerException("Please set SMTP host");
}
else {
server.put("mail.smtp.host", this.smtpHost);
}
server.put("mail.smtp.port", String.valueOf(this.smtpPort));
if (this.isAuthenticationSMTP) {
server.put("mail.smtp.auth", "true");
}
Session conn = Session.getInstance(server, null);
MimeMessage msg = new MimeMessage(conn);
if (StringUtil.isEmpty(this.from)) {
throw new NullPointerException("Please set FROM address");
}
else {
msg.setFrom(new InternetAddress(this.from));
}
if (this.to != null) {
msg.setRecipients(Message.RecipientType.TO, this.to);
}
// else {
// throw new NullPointerException("Please set TO address");
// }
if (this.cc != null) {
msg.setRecipients(Message.RecipientType.CC, this.cc);
}
if (this.bcc != null) {
msg.setRecipients(Message.RecipientType.BCC, this.bcc);
}
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?" + enc.encode(this.title.getBytes()) + "?=");
if (!hasAttachment()) {
//如果没有带附件
if(this.isHtmlModeMail()){
//是HTML格式的邮件
if (!this.hasHtmlDesc()) {
msg.setContent(this.content, this.content_type);
}
else {
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = null;
mbp = new MimeBodyPart();
mbp.setContent(this.content, this.content_type);
mp.addBodyPart(mbp);
mbp = new MimeBodyPart();
mbp.setContent(this.htmlMailDesc, this.MODE_TEXT);
mp.addBodyPart(mbp);
msg.setContent(mp);
}
}
else{
//是文本格式的邮件
msg.setText(this.content);
}
}
else {
//有附件
Multipart mp = new MimeMultipart();
MimeBodyPart mbp = null;
//邮件正文
for (int i = 0; i < vFiles.size(); i++) {
mbp = new MimeBodyPart();
File file = (File) vFiles.get(i);
FileDataSource fds = new FileDataSource(file);
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(StringUtil.ISO8859_1(file.getName()));
mp.addBodyPart(mbp);
}
for (int i = 0; i < vURLs.size(); i++) {
mbp = new MimeBodyPart();
URL url = (URL) vURLs.get(i);
// URLDataSource uds=new URLDataSource(url);
mbp.setDataHandler(new DataHandler(url));
mbp.setFileName(StringUtil.ISO8859_1(url.getFile()));
mp.addBodyPart(mbp);
}
mbp = new MimeBodyPart();
mbp.setContent(this.content, this.content_type);
mp.addBodyPart(mbp);
if (this.isHtmlModeMail() && this.hasHtmlDesc()) {
mbp = new MimeBodyPart();
mbp.setContent(this.htmlMailDesc, this.MODE_TEXT);
mp.addBodyPart(mbp);
}
msg.setContent(mp);
}
msg.saveChanges();
if (this.isAuthenticationSMTP) {
Transport transport = conn.getTransport("smtp");
transport.connect(this.smtpHost, this.smtpUser, this.smtpPassword);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
}
else {
Transport.send(msg, msg.getAllRecipients());
}
}
catch (javax.mail.internet.AddressException e) {
e.printStackTrace();
}
catch (javax.mail.MessagingException e) {
e.printStackTrace();
}
}
public boolean isValidEmailAddress(String email) {
if (StringUtil.isEmpty(email))
return false;
if (email.indexOf("@") > 0)
return !email.endsWith("@");
return false;
}
private Address[] getAddress(String[] add) {
Address[] a = new Address[add.length];
for (int i = 0; i < add.length; i++) {
try {
a[i] = new InternetAddress(add[i]);
}
catch (AddressException ex) {
ex.printStackTrace();
}
}
return a;
}
public boolean isHtmlModeMail(){
return this.content_type.equals(this.MODE_HTML);
}
public boolean hasHtmlDesc(){
if(!this.isHtmlModeMail()) return false;
return !StringUtil.isEmpty(this.htmlMailDesc);
}
/**
* 普通模式
*/
public static final String MODE_TEXT = "text/plain;charset=gb2312";
/**
* HTML模式
*/
public static final String MODE_HTML = "text/html;charset=gb2312";
}
相关推荐
本知识点主要围绕“邮件发送类.NET C#源码”展开,讲解如何利用C#编写一个邮件发送类,并通过SMTP(Simple Mail Transfer Protocol)服务器发送邮件。 首先,理解邮件发送类的基本结构是非常重要的。此类通常包含...
3. **邮件发送类**:邮件发送类库如`System.Net.Mail`允许开发者轻松地发送电子邮件,支持设置发件人、收件人、主题、正文、附件等,还能处理SMTP服务器的配置。 4. **正则类**:正则表达式是用于文本模式匹配的...
在IT行业中,邮件发送是日常通信和数据传输的重要方式,特别是在企业级应用中。这个压缩包文件包含了多个与邮件发送相关的源代码文件,主要涉及SMTP(Simple Mail Transfer Protocol)协议和MIME(Multipurpose ...
Java发送邮件工具类是Java开发中常用的一种技术,主要用于企业级应用中发送通知、验证码、报表等信息。这个工具类通常基于JavaMail API实现,它允许开发者通过编程方式发送电子邮件。下面将详细介绍Java发送邮件的...
它是一个开源的邮件服务器模拟器,可以在不实际发送邮件的情况下测试邮件发送和接收功能。通过配置GreenMail,开发者可以模拟多用户环境,接收和检查发送的邮件,验证邮件内容的正确性,从而确保邮件系统的正常运行...
phpSMTP邮件发送类是一个实用的工具,它允许开发者通过SMTP协议发送邮件,而无需在服务器上进行复杂的邮件服务器配置。这个类库的使用非常直观,只需要将它导入到项目中,然后创建类的实例,填充必要的参数,如发件...
* MessageParts:这是 TIdMessageParts 类的一个实例,用来存储邮件的信息 * Body:这是个字符串列表,包含构成该邮件的正文内容 * Form:发送邮件者的地址信息 * Recipients:收件人地址信息 * BccList:抄送地址...
网络通信模块则负责通过SMTP(简单邮件传输协议)进行邮件发送,以及通过POP3或IMAP4协议进行邮件接收;邮件处理模块则处理邮件的格式、编码和安全问题;存储模块则保存用户的邮件数据。 在提供的文件列表中,我们...
MailUtil:邮件工具类,包括发送纯文本邮件,带(1个/多个)附件的邮件, 群发邮件 NumberUtil:数字操作工具 包括精准数字运算,数据格式化 PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil...
Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...
MessageParts:这是TIdMessageParts类的一个实例,它用来存储邮件的信息。如邮件内容及附件信息。在进行解析时需要判断它是否为附件或文本,如果为附件时,其文件名是经过BASE64编码的。判断常量分别为TIdText , ...
首先,最常用的邮件发送库是JavaMail API。它是一个开源的API,为Java应用程序提供创建、发送和接收电子邮件的能力。JavaMail API包括多个组件,如`javax.mail`和`javax.mail.internet`,它们提供了邮件消息的构造、...
本压缩包“电子邮件发送和接收程序.rar”包含了关于如何实现这一功能的相关程序和可能的源代码,旨在帮助开发者理解和构建自己的邮件系统。 首先,我们需要理解电子邮件的工作原理。电子邮件系统基于SMTP(Simple ...
Java邮件发送工具类是Java开发中常用的一种组件,主要用于实现程序自动发送电子邮件的功能。这个工具类可以帮助开发者在程序中方便地添加附件,并确保内容和附件能够同时正确显示。以下是对这个知识点的详细说明: ...
在IT领域,C#邮件收发系统源码是开发者常用的一种工具,用于构建应用程序中的电子邮件功能。本系统基于SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)协议,这两种协议是互联网上...
电子邮件发送是IT行业中常见的一种通信方式,特别是在自动化任务、通知服务和系统集成中扮演着重要角色。本资源包含了一系列用于创建和发送电子邮件的Java库,这些库被封装在jar包中,便于开发者直接引用和使用。...
创建一个辅助类,例如`EmailSender`,用于封装邮件发送的相关方法: ```csharp public class EmailSender { private readonly string _fromAddress; private readonly string _password; private readonly ...
`SmtpClient`类则负责实际的邮件发送工作,它连接到SMTP服务器并传递邮件。 2. **System.Threading**: 这个命名空间提供了对多线程编程的支持。在定时发送邮件的场景下,我们可以使用`Timer`类或者`Task.Delay`方法...
邮件发送类 ```java public class SendMail { private String smtp = "XXX.XXX.com"; private String sendEmail = "XXX@XXX.com"; private String sendEmailPw = "XXX"; private String toEmail = "XXX@XXX....
总结起来,C#中的邮件发送涉及对SMTP协议的理解、使用`MailMessage`和`SmtpClient`类进行邮件构造和发送,以及在WinForm应用中与用户交互的界面设计。掌握这些知识点,你就能轻松地在你的.NET应用中实现邮件发送功能...