package com.vutc.common.view;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
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;
/**
* Title: 使用JavaMail发送邮件
* Description: 使用JavaMail包发送电子邮件,可发送多附件。
* Copyright: Copyright (c) 2008
* Filename: JavaMail.java
*
* @version 1.0
*/
public class JavaMail {
String to = ""; //收件人
String from = ""; //发件人
String host = ""; //SMTP主机
String username = ""; //发件人邮箱用户名
String password = ""; //发件人邮箱密码
String filename = ""; //附件文件名
String subject = ""; //邮件主题
String content = ""; //邮件正文
Vector<String> file = new Vector<String>(); //附件文件集合
/**
* 默认构造器
*/
public JavaMail() {
}
/**
* 构造器,提供直接的参数传入
*/
public JavaMail(String to, String from, String smtpServer, String username,
String password, String subject, String content) {
this.to = to;
this.from = from;
this.host = smtpServer;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
}
/**
* 往附件组合中添加附件
*/
public void attachfile(String fname) {
file.addElement(fname);
}
/**
* 发送邮件
* boolean 成功为true,反之为false
*/
public boolean sendMail() {
//构造mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
//构造MimeMessage 并设定基本的值
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
subject = transferChinese(subject);
msg.setSubject(subject);
//构造Multipart
Multipart mp = new MimeMultipart();
//向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
//向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//向Multipart添加附件
Enumeration<String> efile = file.elements();
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());
//向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
//向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
return false;
}
return true;
}
/**
* 主方法,用于测试
*/
public static void main(String[] args) {
JavaMail sendmail = new JavaMail();
sendmail.setHost("smtp.163.com");
sendmail.setUserName("wiiln");
sendmail.setPassWord("123456");
sendmail.setTo("wiiln@yeah.net");
sendmail.setFrom("wiiln@163.com");
sendmail.setSubject("主题测试!");
sendmail.setContent("内容测试!");
sendmail.attachfile("c:/files/a.txt");
sendmail.attachfile("c:/files/bang.rar");
sendmail.sendMail();
}
/**
* 把主题转换为中文
*/
private String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),"GB2312"), "GB2312", "B");
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public Vector<String> getFile() {
return file;
}
public void setFile(Vector<String> file) {
this.file = file;
}
public String getTo() {
return to;
}
public String getFrom() {
return from;
}
public String getHost() {
return host;
}
public String getSubject() {
return subject;
}
public String getContent() {
return content;
}
public void setTo(String to) {
this.to = to;
}
public void setFrom(String from) {
this.from = from;
}
public void setHost(String host) {
this.host = host;
}
public void setUserName(String usn) {
this.username = usn;
}
public void setPassWord(String pwd) {
this.password = pwd;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setContent(String content) {
this.content = content;
}
}
分享到:
相关推荐
JavaMail 是一个开源的 Java API,它为 Java 程序员提供了处理电子邮件的功能,包括发送、接收和管理邮件。这个“javamail-1.4.4”版本是 JavaMail 的一个稳定版本,提供了丰富的功能和改进,适用于各种邮件系统。在...
myJavaMainDemo.rar JavaMail-smtp协议发送邮件! java示例
1. **发送邮件**:通过 SMTP 协议发送纯文本或 HTML 邮件,包括添加附件,支持Gmail、Yahoo、Outlook等服务商。 2. **接收邮件**:使用 POP3 或 IMAP 协议检查和下载邮件,可以设定基于特定条件的过滤器。 3. **MIME...
2. **POP3(Post Office Protocol v3)和IMAP(Internet Message Access Protocol)支持**:除了发送邮件,JavaMail 还能处理接收邮件,支持POP3和IMAP这两种常见的邮件收取协议。 3. **多部分和MIME(Multipurpose...
4. 使用 `Transport` 发送邮件。 5. 如需接收邮件,使用 `Store` 连接邮件服务器,打开 `Folder` 并读取邮件。 在实际应用中,JavaMail 还可以与其他库结合使用,如 Apache Commons Net 提供了更底层的 SMTP 支持,...
ant-javamail-1.6.jar.zip包含的ant-javamail-1.6.jar是Ant的一个邮件任务库,它为Ant构建脚本提供了发送邮件的能力。例如,你可以使用`<mail>`任务来设置发件人、收件人、主题、正文等信息,并直接在Ant脚本中发送...
1. **连接邮件服务器**:JavaMail支持多种协议,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议),使得程序可以发送和接收邮件。 2. **创建和管理邮件**:开发者可以通过JavaMail创建...
通过这个压缩包,开发者可以利用Ant的强大自动化能力,结合JavaMail的邮件功能,实现构建后的自动通知、测试结果报告的邮件发送等实用功能,大大提高了开发效率和团队协作的流畅性。 总结,"ant-javamail-1.6.4.jar...
1. **SMTP 协议支持**:JavaMail 提供了 SMTP(简单邮件传输协议)服务,用于发送邮件。通过 `Session` 对象设置 SMTP 服务器信息,然后创建 `MimeMessage` 对象来构造邮件内容,最后使用 `Transport.send()` 方法...
JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,如发送邮件、接收邮件、处理附件等。在JavaMail中实现发送邮件的功能,主要涉及到SMTP(Simple Mail Transfer Protocol)协议,这是一种用于在...
在Ant中,`ant-javamail`是一个任务驱动器,使得Ant能够集成JavaMail库,从而实现发送邮件的功能。 JavaMail是Java平台上的一个开源库,专门处理电子邮件的收发。它提供了丰富的API,涵盖了SMTP、POP3、IMAP等多种...
开发者只需要在Ant任务中配置相关的JavaMail属性,如SMTP服务器、用户名、密码等,就可以使用Ant发送邮件。 JavaMail API,版本1.6.2,是Java平台上的标准邮件接口,它允许程序通过SMTP、POP3、IMAP等多种协议与...
`ant-javamail-1.6.3.jar`就是这个库的特定版本,其中包含了发送邮件所需的所有类和方法。这个版本(1.6.3)是针对Ant的一个稳定版本,提供了可靠的邮件处理能力,适用于各种Java项目。 JavaMail则是Java平台上的...
2. **SMTP协议**:JavaMail 使用简单邮件传输协议(SMTP)来发送邮件。通过SMTP服务器,程序能够将邮件路由到正确的收件人。 3. **POP3和IMAP协议**:对于邮件接收,JavaMail 提供了对邮局协议第三版(POP3)和...
下面将详细介绍JavaMail发送邮件的基本流程和关键知识点: 1. **配置Properties对象**:在发送邮件前,需要配置`Properties`对象,设置SMTP服务器的相关信息,如主机名、端口号、是否使用SSL/TLS加密等。例如: ``...
3. Transport:Transport类是实际发送邮件的接口。创建好MimeMessage后,需要通过Transport.send()方法将其发送出去。Transport还支持异步发送,这对于处理大量邮件的场景非常有用。 JavaMail-1.4 API不仅限于上述...
Jenkins构建结果发送邮件所需jar包,本人发表的文章标题为《使用Jenkins-ant-jmeter发送构建结果到指定邮箱报错的问题》所需jar包
4. **Transport**:Transport 类是发送邮件的关键,它负责将 Message 实例通过 SMTP 协议发送到指定的邮件服务器。 5. **MimeMessage**:MimeMessage 是 Message 的子类,用于处理多部分(MIME)邮件,支持包含文本...
通过引入"ant-javamail-1.6.5.jar",Ant可以集成JavaMail功能,从而在构建流程中发送邮件,这对于自动化测试报告的分发或者错误通知非常有用。 JavaMail,另一方面,是Java平台上的一个开源库,用于处理电子邮件的...
1. **SMTP(Simple Mail Transfer Protocol)支持**:JavaMail 使用SMTP协议来发送邮件,这是互联网上最常用的邮件传输协议。 2. **POP3(Post Office Protocol version 3)和IMAP4(Internet Message Access ...