`
jimmychenli
  • 浏览: 69611 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javaMail邮件发送

    博客分类:
  • JAVA
阅读更多

javaMail邮件发送

 

利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。


(没有装载JavaMail API的读者,可以到
此站点下载,并按照Readme.txt设置好ClassPath)


一、JavaMail中一些我们需要的类


1.Properties


JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:


 

Properties props = new Properties ();
props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。

 




2.Session


所有的基于JavaMail的程序都至少需要一个或全部的对话目标。


 

Session session = Session.getInstance(props, null);

 




3.MimeMessage


信息对象将把你所发送的邮件真实的反映出来。


 

MimeMessage msg = new MimeMessage(session);

 




4.Transport


邮件的发送是由Transport来完成的:


 

Transport.send(msg);

 




二、我们自己创建的可发送附件的类


 

import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//定义发件人、收件人、主题等
String to="";
String from="";
String host="";
String filename="";
String subject="";
//用于保存发送附件的文件名的集合
Vector file = new Vector();
//做一个可以传发件人等参数的构造
public Mail (String to,String from,String smtpServer,String subject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该方法用于收集附件名
public void attachfile(String fname){
file.addElement(fname);
}
//开始发送信件的方法
public boolean startSend(){
//创建Properties对象
Properties props = System.getProperties();
//创建信件服务器
props.put("mail.smtp.host", host);
//得到默认的对话对象
Session session=Session.getDefaultInstance(props, null); try {
//创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
//利用枚举器方便的遍历集合
Enumeration efile=file.elements();
//检查序列中是否还有更多的对象
while(efile.hasMoreElements()){
MimeBodyPart mbp=new MimeBodyPart();
//选择出每一个附件名
filename=efile .nextElement().toString();
//得到数据源
FileDataSource fds=new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
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;
}
}

 




下面是一个源码

package com;

 

import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Message;
import org.springframework.stereotype.Component;

import com.util.SysGlobal;


 
@Component("sendmail")
public class SendMail {

 private static File file;
 public static void main(String[] args) throws IOException{

   SendMail sendmail=new SendMail();
   String sendEmail = "
chenlichenli520@126.com";
   String sendPwd = "******";
   String host = "smtp.126.com";
   FileReader reader=new FileReader("chen.txt");//此处是一个文件名,发送邮件的信息全部放在此txt文件中
   BufferedReader buf=new BufferedReader(reader);
   String context="";
   String row="";
   while((row=buf.readLine())!=null)
   {
    context=context+row+"\n<br/>";
   }
   context =SendMail.removeFFFE(context);
   context=context.replaceAll("
\\&\\{email\\}","jimmychenli@126.com");
   context=context.replaceAll("
\\&\\{info\\}","ss");
   System.out.println(context);
       String info=context;
  if(sendmail.send(sendEmail, "
393758826@qq.com",sendPwd,host,info)){
    System.out.println("邮件发送成功");

   }

 
  }

 private static String removeFFFE(String s) {
        for(int i=0; i<2; i++) {
            if(s.length()>1) {
                char c = s.charAt(0);
                if(c==0xfffe || c==0xfeff)
                    s = s.substring(1);
            }
        }
        return s;
    }
 public static boolean send(String from,String to,String password,String host,String info){

  Properties props=new Properties();
  // 与服务器建立Session的参数设置
  props.put("mail.smtp.host", host);// host服务器。
  props.put("mail.smtp.auth", "true");//服务自动验证
  Session mailSession=Session.getDefaultInstance(props,null);//与服务器建立连接
 
  try{
 //Transport用来发送邮件传输协议
   Transport trans=mailSession.getTransport("smtp");
   trans.connect(host,from,password);
   //创建邮件发送信息
   Message newMessage=new MimeMessage(mailSession);
   newMessage.setSubject("温馨提示");//设计发送邮件的主题
   newMessage.setFrom(new InternetAddress(from));//设定所发人的邮箱;
   BodyPart fileBodyPart=new MimeBodyPart();
/*   FileDataSource fds=new FileDataSource(file);
   fileBodyPart.setDataHandler(new DataHandler(fds));*/
   fileBodyPart.setHeader("text/html", "utf-8");
   Address addressTo[] = { new InternetAddress(to)};
   newMessage.setRecipients(Message.RecipientType.TO, addressTo);
   fileBodyPart.setContent(info,"text/html;charset=utf-8");//设定可以发送HTML格式的邮件,最终将显示HTML

   MimeMultipart multi = new MimeMultipart();
   multi.addBodyPart(fileBodyPart);
   newMessage.setContent(multi);
   newMessage.saveChanges();
   trans.sendMessage(newMessage, newMessage.getRecipients(Message.RecipientType.TO));
   trans.close();
   return true;
  }catch(Exception ex){
   ex.printStackTrace();
   return false;
  }
 }

}

分享到:
评论
1 楼 rc123 2009-02-14  
 

相关推荐

    常规JavaMail 邮件发送实用类

    "常规JavaMail 邮件发送实用类"标题所指的,通常是一个自定义的Java类,封装了JavaMail API的基本操作,使得邮件发送变得更加简单和便捷。这类实用类一般包含配置SMTP服务器、设置邮件内容、添加附件等功能。 ...

    javamail邮件发送工具类

    JavaMail邮件发送工具类是Java开发中用于发送电子邮件的标准库,它提供了丰富的API来处理复杂的邮件功能。在JavaMail中,我们可以通过创建特定的类和对象来实现邮件的发送。以下将详细介绍这些类以及如何使用它们。 ...

    JavaMail邮件发送Deom

    JavaMail邮件发送Demo是Java开发中用于实现电子邮件发送的一个实例,它依赖于两个关键的库:activation.jar和mail.jar。这两个库提供了JavaMail API,使得Java开发者能够方便地与各种邮件服务器进行交互,完成邮件的...

    javamail邮件发送实例

    JavaMail邮件发送实例是Java开发中常见的一个应用场景,主要用于实现程序自动发送电子邮件的功能。这个实例可以帮助开发者理解如何使用JavaMail API来构建邮件服务。在JavaMail API中,我们可以使用MimeMessage类...

    javamail邮件发送源码

    JavaMail邮件发送源码是Java开发中用于发送电子邮件的一个库,它提供了丰富的API来处理SMTP、POP3和IMAP等邮件协议。这个简单的javamail实例表明,开发者已经成功地测试了邮件发送功能,确保其在实际应用中可以正常...

    javamail邮件发送项目

    【javamail邮件发送项目】是一个基于Java技术的邮件发送解决方案,主要利用Spring框架进行配置,结合FreeMarker(FTL)模板技术实现邮件内容的动态生成,并具备异步发送及批量处理邮件的能力,最多可同时处理1000份...

    javamail邮件发送接收测试

    这个“javamail邮件发送接收测试”是开发者在学习过程中创建的一个测试项目,旨在帮助理解和实践 JavaMail 的核心功能。通过这个项目,我们可以深入理解如何使用 JavaMail API 来实现邮件的发送和接收。 JavaMail ...

    Spring实现JavaMail邮件发送功能

    在本篇文章中,我们将深入探讨如何利用Spring来实现JavaMail邮件发送,以及在实际应用中需要注意的关键点。 首先,我们需要理解JavaMail API的基础概念。JavaMail是一个用于处理邮件的开放源码API,它允许开发者...

    javamail邮件发送程序

    JavaMail邮件发送程序是Java平台上的一个开源库,用于处理电子邮件的发送和接收。这个程序允许开发者通过SMTP(简单邮件传输协议)、POP3(邮局协议)或IMAP(因特网消息访问协议)等标准协议来收发邮件。在Java EE...

    javamail邮件发送

    JavaMail邮件发送是Java开发中一个常见的任务,用于程序自动化发送电子邮件。这个技术基于JavaMail API,它提供了一组丰富的接口和类,使得开发者能够轻松地处理邮件的发送、接收和管理。在JavaMail中,主要涉及的...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    JavaMail邮件发送

    JavaMail邮件发送是一种在Java应用程序中发送电子邮件的技术。它是一个开源的Java库,允许开发者通过SMTP(简单邮件传输协议)或其他邮件传输协议向互联网上的邮件服务器发送邮件。这个程序是用Java编写的,并且在...

    JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统

    JavaMail邮件发送是一个常见的开发需求,它允许程序员通过编程方式发送包含文本、附件甚至多媒体内容的电子邮件。在Java中,JavaMail API提供了这样的功能,它是一个开源库,用于处理SMTP(简单邮件传输协议)、POP3...

    Javamail邮件发送

    这个“Javamail邮件发送”项目很可能是为了演示如何使用 Javamail API 来实现邮件发送功能,包括单独发送和群发邮件。 首先,我们需要引入 Javamail 的相关依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下...

    JavaMail邮件发送源码 非常简单

    2. **获取Session对象**:使用`Properties`对象创建一个`Session`实例,它是邮件会话的容器,可以存储邮件发送的配置信息。 3. **创建Message对象**:通过`Session`对象创建一个`Message`实例,这代表了你要发送的...

    javamail 邮件发送

    下面将详细介绍JavaMail邮件发送的相关知识点。 首先,JavaMail的核心组件是`javax.mail`和`javax.mail.internet`这两个包。它们提供了发送邮件所需的类和接口。例如,`Session`代表邮件会话,`Message`用于构建...

    JavaMail邮件发送程序所需JAR包

    JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。

    java javamail 邮件发送

    在`test.java`文件中,你可以看到这些步骤的实现,通过运行该文件进行邮件发送的测试。请注意,为了安全起见,实际应用中不应硬编码敏感信息如用户名和密码,而应使用环境变量或配置文件。 总的来说,JavaMail提供...

Global site tag (gtag.js) - Google Analytics