基于JAVAMAIL包的邮件发送程序----kangkang

     JavaMail API 是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它配置了各种因特网邮件协,包括 SMTP POP IMAP MIME ,还包括相关的 NNTP S/MIME 及其它协议。通常开发 JavaMail 程序还需要有 Sun JavaBeans Activation Framework JAF )。 JavaBeans Activation Framework 的运行很复杂,这里简单的说就是 JavaMail 的运行必须得依赖于它的支持,比如 JavaMail 利用 JavaBeans Activation Framework 来处理 MIME 编码的邮件附件。 JavaMail 接口包含在 javax.mail 及其子包中, JavaBeans Activation Framework 接口包含在 javax.activation 包中, JAF 规范是 "Glasgow" JavaBeans 规范的一部分,关于 JAF 的更多细节,请参考 JAF 指南:

http://java.sun.com/beans/glasgow/jaf.html

   

 核心JavaMail API 由七个类组成:Session Message Address Authenticator Transport Store Folder ,它们都来自javax.mail 、即JavaMail API 顶级包。可以用这些类完成大量常见的电子邮件任务,包括发送消息、检索消息、删除消息、认证、回复消息、转发消息、管理附件、处理基于HTML文件格式的消息以及搜索或过滤邮件列表。有关JavaMail 的更多信息,请参考JavaMail 指南:

http://java.sun.com/products/javamail/

 

     类似的用javamail实现的sendmail程序,网上有很多。但笔者发现大都有一点问题。我的code在下面。调式前请确定您的机子已经安装好JDK1.4 javamial1.3.2 JAF。如果没有安装请按如下步骤安装:

 1  www.java.sun.com 网站上获取最新的JDK。然后设置java环境变量。

如果是Win95/98,在/autoexec.bat的最后面添加如下3行语句:

JAVA_HOME=c:/j2sdk1.4.2

PATH=%JAVA_HOME%/bin;%PATH%

CLASSPATH=.;%JAVA_HOME%/lib

看好了CLASSPATH中第一个“.”,这个代表当前目录,很多人HelloWorld没有运行起来大多是这个原因。

 

如果是Win2000或者XP,使用鼠标右击“我的电脑”->属性->高级->环境变量

系统变量->新建->变量名:JAVA_HOME 变量值:c:/j2sdk1.4.2

系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%/bin;

系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar;

CLASSPATH前面的那个"."和上面的意义是一样的。

    请调式一个helloworld来验证安装是否成功?

2  http://java.sun.com/products/javamail/ 下载最新的javamail

     set CLASSPATH=%CLASSPATH%;c:/download/javamail-1.3.2/mail.jar;.

    

3   http://java.sun.com/products/javabeans/glasgow/jaf.html下载JAF 

     set CLASSPATH=%CLASSPATH%;c:/download/activation/activation.jar

4   ok。终于可以先喘口气了。 接下来开始程序部分。把if(themail.setTo("########") == false) return;中的#####号改为你自己的邮箱。 再把if(themail.addFileAffix("#######") == false) return; #####写为本地的一个文件路径。也可空着。为了更多的人学习,请大家不要修改sendMail@163.com  密码:sendcode   本邮箱只在程序测试中使用!!

    然后,在DOS

    javac sendMail.java

    java sendMail

    呵呵 成功!!!我的主机DOS显示

    D:/>java  sendMail

   设置系统属性:mail.smtp.host = smtp.163.com

   准备获取邮件会话对象!

   准备创建MIME邮件对象!

   设置smtp身份认证:mail.smtp.auth = true

   设置邮件主题!

   设置邮件体格式

   设置收信人

   设置发信人!

   增加邮件附件:D:/sendMail.java

   程序得到用户名与密码

   正在发送邮件....

   发送邮件成功!

*************************************************************************

/**

* @author  kangkang     

* http://corncc.ikdiy.com

* 2005.4.14

*/

 

import java.util.*;

import javax.mail.*;

import javax.mail.internet.*;

import java.util.Date;

import javax.activation.*;

import java.io.*;

 

 

public class sendMail

{ 

       //  21-30行把本程序所用变量进行定义。 具体在main中对它们赋植。

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(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();           //mp   一个multipart对象

                                   //Multipart is a container that holds multiple body parts.

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)

 {

      System.out.println("程序得到用户名与密码");

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

  {

        System.out.println("设置邮件体格式");

   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)

{

  System.out.println("设置收信人");

  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)

{

       System.out.println("发送附件到");

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 = "hello. This is a testing.";

 

sendMail themail = new sendMail("smtp.163.com");

themail.setNeedAuth(true);

 

if(themail.setSubject("dkjjf") == false) return;

if(themail.setBody(mailbody) == false) return;

if(themail.setTo("########") == false) return;

if(themail.setFrom("senfMail@163.com") == false) return;   

if(themail.addFileAffix("#######") == false) return;   //附件在本地机子上的绝对路径

themail.setNamePass("sendMail","javacode");   //用户名与密码

if(themail.sendout() == false) return;

}

}

*************************************************************************

TIPS

A程序前部只是一个抽象的定义。在main函数中给出了具体的参数。

B 好好利用System.out.println观察程序的执行过程。

C  阅读javamaill/docs/javadocs/index.html 

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值