posts - 0,  comments - 17,  trackbacks - 0
package com.royal.mail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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;

public class Mail

{


    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 Mail(String smtp)
    {
        setSmtpHost(smtp);
        createMimeMessage();
    }
    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主机
    }
    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对象
            return true;
        }
        catch (Exception e)
        {
            System.err.println("创建MIME邮件对象失败!" + e);
            return false;
        }
    }


    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");

        }

    }
    public void setNamePass(String name, String pass)
    {
        System.out.println("程序得到用户名与密码");
        username = name;
        password = pass;
    }

    public boolean setSubject(String mailSubject) {
        System.out.println("设置邮件主题!");
        try {
            mimeMsg.setSubject(mailSubject);
            return true;
        }
        catch (Exception e) {
            System.err.println("设置邮件主题发生错误!");
            return false;
        }
    }

    public boolean setBody(String mailBody)
    {
        try
        {
            System.out.println("设置邮件体格式");
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+mailBody,"text/html;charset=UTF-8");
            mp.addBodyPart(bp);
            return true;
            
            
            
        }
        catch (Exception e)
        {
            System.err.println("设置邮件正文时发生错误!" + e);
            return false;
        }
    }

    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;
        }
    }

    public boolean setFrom(String from) {
        System.out.println("设置发信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }
    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;
        }
    }


    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;
        }
    }

    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;
        }
    }

    /*public static void main(String[] args)
    {
        String mailbody = "<html><head></head><body><hr><font color=""red"">hello. This is a testing.</red></body></html>";
        Mail themail = new Mail("smtp.163.com");
        themail.setNeedAuth(true);
        if (themail.setSubject("dkjjf") == false)
            return;
        if (themail.setBody(mailbody) == false)
            return;
        if (themail.setTo("lyh@jobbaidu.com") == false)
            return;
        if (themail.setFrom("iversonpa@163.com") == false)
            return;
        //if (themail.addFileAffix("d://aaa.rar") == false)
            //return; // 附件在本地机子上的绝对路径
        themail.setNamePass("iversonpa", "******"); // 用户名与密码
        if (themail.sendout() == false)
            return;
    }*/

}

posted on 2007-12-18 11:45 xyz 阅读(203) 评论(0)  编辑  收藏 所属分类: 他山之石

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

留言簿

随笔档案(1)

文章分类(44)

文章档案(46)

收藏夹(1)

Adobe

AOP

API

appServer

BI

c

  • c-free
  • codeblocks
  • codelite
  • CodeLite IDE 是一个强大的开源,跨平台的 C/C++整合开发环境. 支持包括 Windows、Linux 和 Mac 系统下运行
  • codelite官网
  • dev-c++
  • Dev-C++是一个C&C++开发工具,它是一款自由软件,遵守GPL协议。
  • GCC
  • GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada 与其他语言。

Cache

CMS

DB

eclipse

FreeMarker

hibernate

html5

ibatis

java

jquery

js

json

Linux

Log

mail server

mobile

mysql

oauth

openID

other

PHP

portal

report

Scheduler

schema

Security

SOA

spring

struts

UI原型设计

w3c

Wap

webservice

xml

供应链管理

博客链接

好网站

工作流

开源网

招聘

插件下载

操作系统

构建可伸缩的系统

构建工具

测试

  • IETest
  • IE官网
  • OpenSTA
  • Siege
  • Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力

游戏

源码托管

经营

资源

金融/财务

搜索

  •  

最新评论