package com.me.util.mail;
/**
* @author Zhangkun aistill@msn.com
* @version 1.0
*/
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
import com.me.util.*;
public class sendMail {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
private boolean needAuth = false; //smtp是否需要认证
private String username = ""; //smtp认证用户名和密码
private String password = "";
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
/**
*
*/
public sendMail() {
setSmtpHost(getConfig.mailHost);//如果没有指定邮件服务器,就从getConfig类中获取
createMimeMessage();
}
public sendMail(String smtp){
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("设置系统属性:mail.smtp.host = "+hostName);
if(props == null)props = System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host",hostName); //设置SMTP主机
}
/**
* @return boolean
*/
public boolean createMimeMessage()
{
try{
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props,null); //获得邮件会话对象
}
catch(Exception e){
System.err.println("获取邮件会话对象时发生错误!"+e);
return false;
}
System.out.println("准备创建MIME邮件对象!");
try{
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
catch(Exception e){
System.err.println("创建MIME邮件对象失败!"+e);
return false;
}
}
/**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
if(props == null)props = System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
}
/**
* @param name String
* @param pass String
*/
public void setNamePass(String name,String pass) {
username = name;
password = pass;
}
/**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject);
return true;
}
catch(Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
}
/**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try{
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
}
catch(Exception e){
System.err.println("设置邮件正文时发生错误!"+e);
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) {
System.out.println("增加邮件附件:"+filename);
try{
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
}
catch(Exception e){
System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try{
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean setTo(String to){
if(to == null)return false;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto)
{
if(copyto == null)return false;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean sendout()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props,null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
//transport.send(mimeMsg);
System.out.println("发送邮件成功!");
transport.close();
return true;
}
catch(Exception e)
{
System.err.println("邮件发送失败!"+e);
return false;
}
}
/**
* Just do it as this
*/
public static void main(String[] args) {
String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
"<div align=center><a href=http://www.csdn.net> csdn </a></div>";
sendMail themail = new sendMail("smtp.msn.com");
themail.setNeedAuth(true);
if(themail.setSubject("标题") == false) return;
if(themail.setBody(mailbody) == false) return;
if(themail.setTo("gates@msn.com") == false) return;
if(themail.setFrom("bill@msn.com") == false) return;
if(themail.addFileAffix("c:\\boot.ini") == false) return;
themail.setNamePass("user","password");
if(themail.sendout() == false) return;
}
}
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
//Warning: 以下内容是必须往里面套的,都是封装好的东西,过多的理由我也说出上,高手补充。
public class SendAttachment
{
public static void main(String[] args)
{
try
{
// 创建 properties ,里面包含了发送邮件服务器的地址。
Properties mailProps = new Properties();
mailProps.put("mail.smtp.host", "192.0.0.1"); //"mail.smtp.host"随便叫啥都行,"192.0.0.1"必须是真实可用的。
// 创建 session
Session mailSession = Session.getDefaultInstance(mailProps);
// 创建 邮件的message,message对象包含了邮件众多有的部件,都是封装成了set方法去设置的
MimeMessage message = new MimeMessage(mailSession);
// 设置发信人
message.setFrom(new InternetAddress(
"chqn@cmmail.com"));
//收信人
message.setRecipient(Message.RecipientType.TO,
new InternetAddress("chqn@cmmail.com"));
// 邮件标题
message.setSubject("I love you"); //haha,恐吓人
// 创建 Mimemultipart,这是包含多个附件是必须创建的。假如只有一个内容,没有附件,可以直接用message.setText(String str)
//去写信的内容,比较方便。附件等于是要创建多个内容,往下看更清楚。
MimeMultipart multi = new MimeMultipart();
// 创建 BodyPart,主要作用是将以后创建的n个内容加入MimeMultipart.也就是可以发n个附件。我这里有2个BodyPart.
BodyPart textBodyPart = new MimeBodyPart(); //第一个BodyPart.主要写一些一般的信件内容。
textBodyPart.setText("详情见附件");
// 压入第一个BodyPart到MimeMultipart对象中。
multi.addBodyPart(textBodyPart);
// 创建第二个BodyPart,是一个FileDAtaSource
FileDataSource fds = new FileDataSource("c:\myattachment.txt"); //必须存在的文档,否则throw异常。
BodyPart fileBodyPart = new MimeBodyPart(); //第二个BodyPart
fileBodyPart.setDataHandler(new DataHandler(fds)); //字符流形式装入文件
fileBodyPart.setFileName("report.xls"); //设置文件名,可以不是原来的文件名
分享到:
相关推荐
NULL 博文链接:https://tgwall.iteye.com/blog/1735704
Java发送邮件是Java编程中的一项常见任务,尤其在企业级应用和自动化脚本中非常实用。这个主题涉及到JavaMail API的使用,一个用于处理电子邮件的开源库。在本文中,我们将深入探讨如何使用Java发送邮件,包括所需的...
这个“java_mail 1.5.zip”压缩包包含的是JavaMail 1.5版本的源代码,对于理解其内部工作原理和自定义扩展功能非常有帮助。 JavaMail API的核心组件包括: 1. **JavaMail Session**: 是JavaMail的核心,负责配置...
Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库提供了全面的API,使得开发者能够方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)等邮件服务。在Java应用...
在“java-mail-1.4”这个版本中,我们主要关注的是 JavaMail 1.4 版本的相关特性、使用方法以及重要概念。 JavaMail 提供了与多种邮件协议(如 SMTP、POP3、IMAP)交互的能力,使得开发者能够轻松地在 Java 应用...
Java Mail 是一个开源的Java API,它为Java开发者提供了处理电子邮件的能力。这个开发包是由Oracle官方网站提供的,确保了其权威性和稳定性。Java Mail API 支持SMTP、POP3、IMAP等多种邮件协议,使得开发者可以方便...
java mail, java send mail form with javax mail sender, build with Gradle , servlet 采用 gradle 管理依赖, junit单元测试, servlet , jsp等技术; 邮件发送账号在统一 的 properties文件中配置,方便集成管理...
这个"java-mail-lib"压缩包文件显然包含了JavaMail相关的类库,使得开发者能够轻松地在Java应用程序中集成邮件功能。下面将详细讨论JavaMail库的关键知识点以及如何使用其中的jar包。 1. JavaMail API概述: ...
Java的javax.mail API是用于在Java应用程序中发送和接收电子邮件的标准库。这个API提供了一种与邮件服务器交互的抽象方式,使得开发者无需关心具体的邮件协议(如SMTP、POP3或IMAP)。在Java中,使用javax.mail库...
Java Mail 是一个强大的Java库,它为开发人员提供了一组API,用于处理电子邮件通信。这个名为 "Java Mail.rar" 的压缩包很可能包含了实现这一功能所需的jar文件和其他资源。在这个压缩包中,我们可以找到 "Java Mail...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者在Java应用程序中收发邮件。Java Web Mail 是基于Java Mail API的扩展,主要用于Web应用中实现邮件功能。在Web环境中,用户通常希望通过网页来发送、接收和...
Java Mail 是一个强大的开源库,用于在Java应用程序中处理电子邮件通信。它提供了API,使得开发者可以方便地发送、接收和管理邮件。这个压缩包文件很可能包含了一组示例代码或工具,帮助我们理解如何使用Java Mail ...
首先,确保引入了JavaMail相关的库,如javax.mail和javax.mail.internet。然后,创建一个MimeMessage对象,设置发件人、收件人、主题和正文内容。最后,使用Transport类发送邮件。 ```java Properties props = new ...
9. **发送邮件**:最后,通过`Transport`类的`send()`方法发送邮件。 对于“文本mail”和“网页mail”,区别在于邮件的内容类型。文本邮件直接设置`MimeBodyPart`的数据源为纯文本,而对于网页mail,可能需要将HTML...
Java Mail 是一个强大的Java库,用于处理电子邮件的发送和接收。在Java Web开发中,它是一个不可或缺的组件,尤其在构建小型系统时,可以作为邮件模块直接应用,无需大量改动。这个压缩包文件包含了与Java Mail相关...
Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...
调用`Transport.send(Message)`方法完成邮件的发送。 8. **MIME 多部分支持**: MIME(Multipurpose Internet Mail Extensions)标准扩展了邮件格式,支持多种类型的数据,如文本、图片、附件等。JavaMail API ...
在命令行环境下,需要确保`mail.jar`位于`java`命令的`-cp`或`-classpath`参数指定的路径中。 总的来说,`mail.jar`是JavaMail API的核心组件,对于任何需要在Java应用中处理电子邮件的开发者来说都是必不可少的。...