- 浏览: 368715 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
verytiny:
tar -czPf t.tar.gz /www/wwwroot ...
tar 打包压缩目录 -
verytiny:
http://www.multilingual.com/
相关站点 -
verytiny:
查看版本
#lsb_release -a
linux 版本 -
chengji518:
我的也出现同样的问题,项目运行没有问题,在别人的机子上也不报, ...
为什么eclipse里的项目突然都有红x出现?再部署就发现程序报错404 -
zhengqxtom:
我的IREPORT3.76一打开就乱吗不知咋回事?我的系统是X ...
iReport乱码解决
MailDao.java
package mail.dao;
import mail.domain.MailBean;
public interface MailDao {
Boolean send(MailBean mail);
}
MailJdbcDao.java
package mail.jdbc;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
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.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import mail.dao.MailDao;
import mail.domain.MailBean;
import mail.util.characterset;
public class MailJdbcDao implements MailDao {
private static MailJdbcDao mjd;
private Log log = LogFactory.getLog(this.getClass().getName());
public MailJdbcDao() {
super();
}
/** 单例模式 */
public static MailJdbcDao getInstance() {
if (mjd == null)
mjd = new MailJdbcDao();
return mjd;
}
/** 发送邮件具体方法 */
public Boolean send(MailBean mail) {
/** 创建session中所需要的Properties对象 */
Properties props = System.getProperties();
props.put("mail.smtp.host", mail.getMailServer());
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.timeout", 2500);
/** 创建邮件会话对象session */
AuthenticatorImpl authenticatorImpl = new AuthenticatorImpl();
authenticatorImpl.setName(mail.getMailUserName());
authenticatorImpl.setPassword(mail.getMailPassword());
Session mailSession = Session.getInstance(props,
authenticatorImpl);
/** 构造MimeMessage<实际发送的电子邮件信息>,并设定基本的值 */
MimeMessage message = new MimeMessage(mailSession);
try {
/** 设置发件人 */
message.setFrom(new InternetAddress(mail.getAddresser()));
/** 设置收件人 : 多个收件人 */
ArrayList<String> list = mail.getAddressee();
InternetAddress[] address = new InternetAddress[list.size()];
for (int i = 0; i < list.size(); i++) {
address[i] = new InternetAddress(list.get(i));
}
message.setRecipients(Message.RecipientType.TO, address);
/** 设置抄送人 */
list = mail.getAddresseeByCC();
if (list.size() > 0) {
address = new InternetAddress[list.size()];
for (int i = 0; i < list.size(); i++) {
address[i] = new InternetAddress(list.get(i));
}
message.setRecipients(Message.RecipientType.CC, address);
}
/** 设置邮件主题 : 编码 */
// message.setSubject(mail.getMailSubject());
message.setSubject(new String(mail.getMailSubject().getBytes(
"ISO-8859-1")), "GBK");
/** 构造Multipart : 该类是用于保存电子邮件内容的容器 :定义了添加、删除、获得电子邮件内容的方法 */
Multipart mp = new MimeMultipart();
/** 设置邮件的正文信息,并添加正文 : 编码 */
MimeBodyPart mbp = new MimeBodyPart();
// mbp.setText(mail.getMailContent());
mbp.setText(
new String(mail.getMailContent().getBytes("ISO-8859-1")),
"GBK");
mp.addBodyPart(mbp);
/** 添加附件 */
list = mail.getFile();
for (int i = 0; i < list.size(); i++) {
/** 将附件逐个添加进去 */
mbp = new MimeBodyPart();
String fileName = list.get(i);
/** 根据附件的名称创建文件数据源 */
FileDataSource fds = new FileDataSource(fileName);
/** 处理附件 : 设置数据处理器 */
mbp.setDataHandler(new DataHandler(fds));
/** 处理附件 : 设置文件名称 */
mbp.setFileName(characterset.to8859(fds.getName()));
mp.addBodyPart(mbp);
}
/** 清空附件 */
mail.setFile(new ArrayList<String>());
/** 将邮件内容添加到MimeMessage */
message.setContent(mp);
/** 设置邮件的发送日期 */
message.setSentDate(new Date());
/** 发送电子邮件 */
Transport.send(message);
///System.out.println("**************"+mail.getMailUserName()+"\t"+mail.getMailPassword());
return true;
} catch (AddressException e) {
log.error(
"MailJdbcDao : send(MailBean mail) : AddressException : ",
e);
System.err
.println("MailJdbcDao : send(MailBean mail) : AddressException : "
+ e.getMessage());
} catch (MessagingException e) {
log
.error(
"MailJdbcDao : send(MailBean mail) : MessagingException : ",
e);
System.err
.println("MailJdbcDao : send(MailBean mail) : MessagingException : "
+ e.getMessage());
} catch (UnsupportedEncodingException e) {
log
.error(
"MailJdbcDao : send(MailBean mail) : UnsupportedEncodingException : ",
e);
System.err
.println("MailJdbcDao : send(MailBean mail) : UnsupportedEncodingException : "
+ e.getMessage());
}
return false;
}
}
Util.java
package mail.util;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
public class Util {
/** 检测物理文件是否存在 */
public static Boolean fileExists(String fileName)
throws UnsupportedEncodingException {
if (new File(fileName).exists()) {
return true;
} else
return false;
}
/** 判断文件扩展名称是否是指定的合法扩展名称 */
public static String judgeFileExtendName(String fileName,
String extendName[]) {
fileName = fileName.toLowerCase();
for (int i = 0; i < extendName.length; i++)
if (fileName.endsWith(extendName[i]))
return extendName[i];
return null;
}
/** 解析字符串返回ArrayList<String> :源字符串,分隔符号 */
public static ArrayList<String> analysisStringForArrayList(String source,
String separator) {
ArrayList<String> list = new ArrayList<String>();
int start = 0;
int end = 0;
String str = null;
while (true) {
end = source.indexOf(separator, start);
if (end == -1) {
str = source.substring(start, source.length());
if (str != null && str.length() > 0)
list.add(str);
break;
}
str = source.substring(start, end);
if (str != null && str.length() > 0)
list.add(str);
start = end + 1;
}
return list;
}
/** 解析字符串返回ArrayList<String> :源字符串,分隔符号 */
public static String[] analysisStringForArray(String source,
String separator) {
String str[] = new String[countString(source, separator)];
int start = 0;
int end = 0;
int index = 0;
String strx = null;
while (true) {
end = source.indexOf(separator, start);
if (end == -1) {
strx = source.substring(start, source.length());
if (strx != null && strx.length() > 0)
str[index] = strx;
break;
}
strx = source.substring(start, end);
if (strx != null && strx.length() > 0)
str[index++] = strx;
start = end + 1;
}
return str;
}
/** 解析字符串 :计算子字符串个数 */
public static int countString(String source, String separator) {
int start = 0;
int end = 0;
int count = 0;
while (true) {
end = source.indexOf(separator, start);
if (end == -1) {
++count;
break;
}
++count;
start = end + 1;
}
return count;
}
/** 将ISO-8859-1编码的字符串转换为页面支持的编码 */
public static String From8859(String source) {
try {
return new String(source.getBytes("ISO-8859-1"));
} catch (UnsupportedEncodingException e) {
System.err
.println("Util : From8859(String source) : UnsupportedEncodingException : "
+ e.getMessage());
}
return null;
}
/** 将页面提交字符串转换成ISO-8859-1编码的字符串 : 存入数据库 */
public static String To8859(String source) {
try {
return new String(source.getBytes(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
System.err
.println("Util : To8859(String source) : UnsupportedEncodingException : "
+ e.getMessage());
}
return null;
}
/** 获得一个格式化的时间字符串 : 年-月-日 时:分:秒 */
public static String getFormatDate() {
return DateFormat.getDateTimeInstance().format(new Date());
}
/** 获得一个格式化的时间字符串 : 年-月-日 时-分-秒 */
public static String getStringDate() {
Calendar calendar = Calendar.getInstance();
StringBuilder date = new StringBuilder();
date.append(calendar.get(Calendar.YEAR));
date.append("-");
date.append(calendar.get(Calendar.MONTH));
date.append("-");
date.append(calendar.get(Calendar.DATE));
date.append(" ");
date.append(calendar.get(Calendar.HOUR));
date.append("-");
date.append(calendar.get(Calendar.MINUTE));
date.append("-");
date.append(calendar.get(Calendar.SECOND));
return date.toString();
}
/** 字符串时间的加减 : 字符串时间,加减量,加减的类型<年、月、日>,加减的动作<加/减> */
public static Calendar DateOperation(String dateString, int number,
String type, Boolean flag) {
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(DateFormat.getDateInstance().parse(dateString));
if (type.equals("DATE")) {
if (flag == true)
number = calendar.get(Calendar.DATE) + number;
else
number = calendar.get(Calendar.DATE) - number;
calendar.set(Calendar.DATE, number);
} else if (type.equals("MONTH")) {
if (flag == true)
number = calendar.get(Calendar.MONTH) + number;
else
number = calendar.get(Calendar.MONTH) - number;
calendar.set(Calendar.MONTH, number);
} else {
if (flag == true)
number = calendar.get(Calendar.YEAR) + number;
else
number = calendar.get(Calendar.YEAR) - number;
calendar.set(Calendar.YEAR, number);
}
return calendar;
} catch (ParseException e) {
System.err
.println("DataUtil : DateOperation : ParseException : 字符串时间格式不对 !例如 : \"2006-12-05\""
+ e.getMessage());
}
return null;
}
/**
* 测试字符串时间范围 :开始时间,结束时间,需要比较时间, return 0 = 在此范围内,1 = 大于结束时间,-1 = 小于开始时间, -2 =
* 异常
*/
public static int compareToDate(String start, String end, String source) {
if (Util.compareTo(start, end) < 0)
return -2;
int i = Util.compareTo(start, source);
int j = Util.compareTo(end, source);
if (i == -2 || j == -2)
return -2;
else if (i >= 0 && j <= 0)
return 0;
else if (j > 0)
return 1;
else
return -1;
}
/** 比较两个字符串时间的大小 : 基准时间,需要比较时间, return 1 = 大于; -1 = 小于; 0 = 等于; -2 = 异常 */
public static int compareTo(String benchmarkDate, String sourceDate) {
try {
Calendar benchmark = Calendar.getInstance();
benchmark
.setTime(DateFormat.getDateInstance().parse(benchmarkDate));
Calendar source = Calendar.getInstance();
source.setTime(DateFormat.getDateInstance().parse(sourceDate));
int i = source.compareTo(benchmark);
if (i > 0)
return 1;
else if (i < 0)
return -1;
else
return i;
} catch (ParseException e) {
System.err
.println("DataUtil : compareTo : ParseException : 字符串时间格式不对 !例如 : \"2006-12-05\""
+ e.getMessage());
return -2;
}
}
}
评论
package mail.jdbc;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/** Authenticator接口实现类 :send Mail 的 session 中用到 */
public class AuthenticatorImpl extends Authenticator {
private String name;
private String password;
public AuthenticatorImpl() {
super();
}
public AuthenticatorImpl(String name, String password) {
super();
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(name, password);
}
}
发表评论
-
java 1.7 jdk 下载地址
2018-06-16 23:12 1731老版本oracle不支持了,还能在这里找到下载。 http ... -
java常用计算方法
2008-12-31 10:22 3054package com.helpUtil; import j ... -
jforum
2007-07-17 13:31 3128你是在JForum上下载的吧? 要加一个文件在根目录下,取名 ... -
<select >用法
2007-06-04 15:18 2305function targch(p){ document ... -
乱码解决
2007-05-24 16:00 1227public static String from885 ... -
用javamail实现发邮件
2007-05-09 15:51 1907package mail; import javax.mail ... -
使用javamail2
2007-04-27 14:27 1279Mailservice.java package mail.s ... -
如何使用javamail
2007-04-27 14:20 1314Mailbean.java package mail.doma ... -
javamail
2007-04-27 14:15 1399newmail.jsp //写邮件ui <%@ page ...
相关推荐
JavaMail 是一个强大的 Java 库,它允许开发者在应用程序中实现电子邮件的发送和接收功能。这个库支持多种邮件协议,如 SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和 IMAP(因特网消息访问协议)用于...
JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...
4. **javamail3-HTML**: 这个示例演示了如何发送包含 HTML 内容的邮件。除了设置纯文本内容,还需要设置 `MimeMessage` 的 `MimeBodyPart` 为 `MULTIPART/ALTERNATIVE` 类型,这样邮件客户端可以选择以纯文本或 ...
3. **POP3和IMAP协议**:对于邮件接收,JavaMail 提供了对邮局协议第三版(POP3)和因特网消息访问协议(IMAP)的支持,允许用户从邮件服务器检索和下载邮件。 4. **JAF(JavaBeans Activation Framework)**:...
JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的能力。这个库不仅支持SMTP、POP3和IMAP协议,还支持其他的邮件系统协议,如NNTP和EWS。JavaMail API是JavaMail库的核心部分,它提供了一系列的接口...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。这个API包括了多种协议的支持,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)。在...
JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个“JavaMail 1.6.0 Final Release”是 JavaMail 的一个重要版本,它包含了对 SMTP(简单邮件传输协议)、IMAP...
JavaMail API是Java平台上用于发送和接收电子邮件的一个标准扩展库。它并不是Java标准库的一部分,而是Java企业版(J2EE)中的一部分。JavaMail提供了一系列用于处理电子邮件的类和接口,允许开发者在Java应用程序中...
JavaMail 是一个开源的 Java API,它为Java开发者提供了处理电子邮件的能力。这个API允许开发者发送、接收、管理邮件,包括附件、HTML 内容、MIME 多部分消息等。`javamail.jar` 文件是JavaMail的核心库,包含了所有...
在这个压缩包中,我们有两个关键的源码文件夹:`javamail2`和`javamail3`,它们很可能是两个不同版本或不同应用场景的邮件发送示例。 首先,让我们了解Java邮件开发的基本概念。JavaMail API是Java平台上的一个标准...
3. **Provider**:JavaMail中的Provider是实现特定邮件协议(如SMTP、POP3、IMAP)的具体类,它们实现了JavaMail API的接口。例如,`SMTPTransport`用于发送邮件,而`IMAPFolder`用于读取邮件。 接下来,我们将重点...
3. **SMTP协议**: - JavaMail 使用SMTP(Simple Mail Transfer Protocol)协议发送邮件。SMTP服务器通常是邮件系统的出站服务器,负责将邮件传递到目的地。 4. **POP3/IMAP协议**: - 对于接收邮件,JavaMail...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JavaMail API则是一个用于处理电子邮件的库。本项目旨在利用JSP和JavaMail API实现在Web应用中发送邮件的功能,主要涉及POP3协议。下面...
3. **MimeMessage 类**:`MimeMessage`是`Message`的一个子类,扩展了对多部分和复杂邮件格式的支持,如HTML内容、附件等。使用`MimeBodyPart`可以添加文本、图片、文件作为邮件的组成部分。 4. **Transport 类**:...
这个“javamail-1_3_3_01邮件发送组件”指的是 JavaMail 的一个特定版本,即1.3.3_01。这个版本可能包含了对之前版本的改进、修复了某些已知问题,或者增加了新的功能。 在JavaMail中,发送邮件主要依赖`javax.mail...
3. **创建Message** - 创建一个`Message`实例,并设置发件人、收件人、主题和邮件内容。可以使用`MimeMessage`类来处理MIME格式的邮件。 4. **连接Transport** - 使用Session获取`Transport`服务,通过该服务发送...
3. **MimeMessage类**:MimeMessage是Message的一个子类,专门处理MIME格式的邮件。MIME是一种标准,允许邮件包含文本、图像、音频、视频等多种类型的数据。 4. **Transport类**:Transport类负责将邮件发送到邮件...
3. **发送邮件**:通过 Transport 类的 send 方法,我们可以将 Message 对象发送出去。这包括编写邮件内容(如主题、正文、附件),以及设置发件人、收件人和抄送人等信息。 4. **接收邮件**:使用 Store 类连接到...
3. **POP3 和 IMAP 协议**:JavaMail 同样支持 POP3 (Post Office Protocol) 用于接收邮件,以及 IMAP (Internet Message Access Protocol) 用于管理和检索邮箱中的邮件。邮件收发示例将演示如何使用这两个协议。 4...