`
madbluesky
  • 浏览: 83017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mailSend

    博客分类:
  • java
阅读更多

package com.miaozhen.sitedna.util;

import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;

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

import org.apache.log4j.Logger;

public class MailSend {

    private static final Logger _logger = Logger.getLogger(MailSend.class.getName());
    private MimeMessage mimeMsg;

    private Session session;

    private Properties props;

    private String username = "";

    private String password = "";

    private Multipart mp;

    public MailSend(String smtp) {

        setSmtpHost(smtp);

        createMimeMessage();

    }

    private void setSmtpHost(String hostName) {

        System.out.println("mail.smtp.host = " + hostName);

        if (props == null)
            props = System.getProperties();

        props.put("mail.smtp.host", hostName);

    }

    private boolean createMimeMessage()

    {

        try {

            session = Session.getDefaultInstance(props, null);

        }

        catch (Exception e) {

            return false;

        }

        try {

            mimeMsg = new MimeMessage(session);

            mp = new MimeMultipart();

            return true;

        }

        catch (Exception e) {

            return false;

        }

    }

    /**
     *
     * @param need
     *            boolean
     *
     */

    private void setNeedAuth(boolean 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
     *
     */

    private void setNamePass(String name, String pass) {

        username = name;

        password = pass;

    }

    /**
     *
     * @param mailSubject
     *            String
     *
     * @return boolean
     *
     */

    private boolean setSubject(String mailSubject) {

        try {

            mimeMsg.setSubject(mailSubject);

            return true;

        }

        catch (Exception e) {

            return false;

        }

    }

    /**
     *
     * @param mailBody
     *            String
     *
     */

    private boolean setBody(String mailBody) {

        try {
            BodyPart bp = new MimeBodyPart();
            bp.setContent("" + mailBody, "text/html;charset=GB2312");
            mp.addBodyPart(bp);
            return true;
        }

        catch (Exception e) {
            System.err.println("error:" + e);
            return false;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *
     */

     private boolean addFileAffix(String 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 (MessagingException e) {   
         return false;   
         }   
         } 

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *
     */

     private boolean setFrom(String from) {
        try {
            mimeMsg.setFrom(new InternetAddress(from));
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *
     */

     private 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
     *
     */

    private boolean setBcc(String bcc) {

        if (bcc == null)
            return false;

        try {

            mimeMsg.setRecipients(Message.RecipientType.BCC, InternetAddress
                    .parse(bcc));

            return true;

        }

        catch (Exception e)

        {
            return false;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *
     */

    private 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
     *
     */

    private boolean sendout(boolean needAuth)

    {

        try {

            mimeMsg.setContent(mp);

            mimeMsg.saveChanges();

            System.out.println("start send email....");
            _logger.info("start send email....");

            if (needAuth){
                SmtpAuth sa = new SmtpAuth();
                sa.setUserinfo(username, password);
                System.out.println("------" + username + "------" + password);
                _logger.info("------" + username + "------" + password);
               
                session = Session.getInstance(props, sa);
            }
            session.setDebug(true);
           
            Transport transport = session.getTransport("smtp");

            transport.connect((String) props.get("mail.smtp.host"), username,
                    password);
            transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
            System.out.println("sucess to send email");
            _logger.info("sucess to send email");
            transport.close();
            return true;

        } catch (Exception e)

        {
            System.err.println("error" + e);
            _logger.info(e.getMessage());
            _logger.info(e.getStackTrace().toString());
            return false;
        }

    }
   
    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *
     */

    private boolean sendout()

    {

        try {

            mimeMsg.setContent(mp);

            mimeMsg.saveChanges();

            System.out.println("start send email....");

            SmtpAuth sa = new SmtpAuth();
            sa.setUserinfo(username, password);
            System.out.println("------" + username + "------" + password);

            Session mailSession = Session.getInstance(props, sa);
            mailSession.setDebug(true);

            Transport transport = mailSession.getTransport("smtp");

            transport.connect((String) props.get("mail.smtp.host"), username,
                    password);
            transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
            System.out.println("sucess to send email");
            transport.close();
            return true;

        } catch (Exception e)

        {
            System.err.println("error" + e);
            return false;
        }

    }

    class SmtpAuth extends javax.mail.Authenticator {
        private String user, password;

        public void setUserinfo(String getuser, String getpassword) {
            user = getuser;
            password = getpassword;
        }

        protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
            return new javax.mail.PasswordAuthentication(user, password);
        }
    }

    public static void main(String[] args) {
        String mailbody = "<html>"
            + "<head>"
            + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />"
            + "<title></title>"
            + "<style type=\"text/css\"></style></head>"
            + "<body>"
            + "<table width=\"769\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
            + "<tr><td width=\"769\" height=\"32\" valign=\"top\"><!--DWLayoutEmptyCell-->&nbsp;</td></tr>"
            + "<tr><td height=\"33\" valign=\"top\"></td></tr>"
            + "<tr><td height=\"34\" valign=\"top\"></td></tr>"
            + "<tr><td height=\"37\" valign=\"top\"></td></tr>"
            + "<tr><td height=\"35\" valign=\"top\"><a href=\"http://192.168.1.122:8080/eyunshu\">�½�</a></td></tr>"
            + "<tr><td height=\"38\" valign=\"top\"></td></tr>"
            + "<tr><td height=\"163\">&nbsp;</td></tr>"
            + "</table></body></html>";
    sendMail("xiaohaibin@miaozhen.com","ceshi自动发邮件",mailbody,"/home/supertool/sql.sql","/home/supertool/sql.sql");
//        test1();
    }
   
   
    /**
     *
     * Just do it as this
     *
     */

    public static void test1() {

        String mailbody = "rrwerewr";

        MailSend themail = new MailSend("mail.miaozhen.com");

        themail.setNeedAuth(true);

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

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

        if (themail.setTo("jiangping@supertool.net.cn") == false)
            return;

        if (themail.setFrom("supertool@miaozhen.com") == false)
            return;

        themail.setNamePass("supertool@miaozhen.com", "123456");

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

    }


    public static boolean sendMail(String to, String title, String body,String... affixFileNames) {
        ResourceBundle resource = null;
        resource = ResourceBundle.getBundle("mailserver", Locale.getDefault());
        String smtphost = resource.getString("mail.smtp.host");
        String from = resource.getString("mail.smtp.from");
        String usr = resource.getString("mail.smtp.name");
        String password = resource.getString("mail.smtp.password");
        boolean needAuth = Boolean.parseBoolean(resource.getString("mail.smtp.auth"));
       
        MailSend themail = new MailSend(smtphost);
        themail.setNeedAuth(needAuth);
        if (themail.setSubject(title) == false)
            return false;
        if (themail.setBody(body) == false)
            return false;
        if (themail.setTo(to) == false)
            return false;
      boolean hasAffix = affixFileNames!=null&&affixFileNames.length>0?true:false;
      if(hasAffix){
          for(int i=0; i<affixFileNames.length; i++){
              String filename = affixFileNames[i];
              themail.addFileAffix(filename);
          }
        }
       
        //themail.setBcc(bcc);

        if (themail.setFrom(from) == false)
            return false;

        themail.setNamePass(usr, password);
        if (themail.sendout(needAuth) == false)
            return false;

        themail = null;

        return true;
    }
}

分享到:
评论

相关推荐

    MailSend

    【MailSend】是一款用于发送邮件的工具,其源码公开,可以帮助开发者或用户自定义邮件发送功能。在深入探讨MailSend之前,我们首先需要理解电子邮件的工作原理和SMTP(Simple Mail Transfer Protocol)协议,这是...

    mailsend 命令行邮件工具

    :: p-mailsend_v4.0 :: :: :: :: Code by : vkill :: :: Thanks : bjsh,est,lxmxm... :: :: 出 处 : http://www.vkill.net http://bbs.cn-dos.net :: :: 功 能 : 命令行邮件发送程序(群发\多附件\匿名) :: :: ...

    mailsend, 通过 命令行 通过SMTP发送邮件的程序.zip

    mailsend, 通过 命令行 通过SMTP发送邮件的程序 mailsend-v1.19mailsend 是一个简单的命令行 程序,可以通过 SMTP 协议发送邮件。 很久以前,我需要在联网的Windows 机器中发送一个程序的提醒邮件,但是找不到这样...

    Python库 | mailsend-0.1.5.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:mailsend-0.1.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    mailsend(daiyanzheng).rar_ mailsend_mailSend_邮件_邮件发送

    《邮件发送程序——mailsend(daiyanzheng)详解》 在信息技术日益发达的今天,邮件已经成为日常工作中不可或缺的通信工具。"mailsend(daiyanzheng)" 是一个专为设计人员打造的带验证功能的邮件发送程序,它提供了一...

    MailSend.rar_smtp socket

    在“MailSend”这个项目中,开发者可能已经实现了这样的功能,通过C#的Socket类直接操作SMTP协议,构建了一个邮件发送客户端。用户可以通过这个客户端程序发送自定义的邮件,而不受内置SMTP客户端的限制。这样的工具...

    mailsend:邮件发送简单实现

    本文将详细讲解如何使用JavaScript实现简单的邮件发送功能,主要围绕"mailsend"项目进行介绍。 首先,JavaScript是一种广泛使用的前端编程语言,但通常来说,由于浏览器的安全限制,JavaScript直接在客户端发送邮件...

    p-mailsend

    标题 "p-mailsend" 描述的是一个在DOS环境下用于发送邮件的工具,它支持自定义邮件的主题、收件人以及正文,并且可以自动压缩附件进行发送。这个工具可能特别适用于那些需要在命令行界面中操作或者在不支持图形用户...

    mailsend:从命令行通过SMTP发送邮件的程序-开源

    **邮件发送工具mailsend详解** `mailsend`是一款小巧而强大的命令行工具,它使得通过SMTP(Simple Mail Transfer Protocol)发送邮件变得极其简单。这款工具适用于程序员或系统管理员,尤其在自动化任务中需要发送...

    lotus domino lotusscript 发邮件程序,类似公式@mailsend的lotusscript代码。

    经过修改和测试,已经做出类似公式@mailsend的lotusscript代码。 已经用在多个程序中!

    mailsend.rar_c# winform 邮箱_mailSend

    c#实现的基于winform邮件群发程序,采用的access数据库,可发多个附件,多个收件人邮箱和发件人邮箱可存入数据库,使用时可以自动提出

    MailSender.rar_CSharp 邮件_MailSender_mailSend_邮件

    邮件客户端,C#实现,核心代码来自国外网站。

    4MailSend.rar

    这次的VC++课程设计,我选择了制作一个操作简单,又可以实现最基本的电子邮件发送功能的工具。这次C++课程设计作业,代码实现采用VC++,界面用MFC实现,邮件发送功能。已通过老师答辩,工程文件亲测可用。

    mailsend.rar_毕设

    这个是基于c# 邮件发送,是毕设题目。邮件方面功能比较齐全。

    e-mail电子邮电客户端程序和文档.7z.zip

    电子邮件在当今社会中扮演了一...MailSend命名空间是我整个程序的核心。它包括两个类。在SmtpMail的类中包含了一个SendMail的方法,它从底层详细地实现了和服务器的交互操作。你既可以用它发送一个纯文本邮件,也可以发

    matlab开发-sendTxtexe

    在MATLAB开发中,"matlab开发-sendTxtexe"是一个项目,其主要目的是利用`mailsend.exe`程序从MATLAB环境中向手机发送文本信息。这个功能对于自动化通知、数据报告或者远程控制等应用场景非常有用。下面我们将深入...

    Oracle+SQL优化之使用索引提示一例

    2. **`mailsend`表的全表扫描**:更严重的问题在于,`mailsend`表在查询条件下未能有效利用索引,导致了全表扫描,极大地消耗了系统资源。 #### 索引优化措施 针对上述问题,采取了以下优化措施: 1. **创建索引*...

    计算机网络实验SMTP邮件发送系统socket编程 (2).docx

    `Initialize`函数负责初始化Winsock环境,而`MailSend`则执行SMTP协议流程,通过socket发送邮件指令和内容。 【实验步骤】 1. 创建VC6工程,设置好包含和库路径。 2. 编写SMTP协议相关的函数和类,实现邮件发送逻辑...

    java上机6参考代码.pdf

    `mailSend`是`DatagramSocket`实例,通过`send`方法将数据包发送出去。 在服务器端(Server.java): 1. 【代码 1】:`new DatagramSocket(1234);` 这行代码创建了一个`DatagramSocket`,监听在端口`1234`,准备...

Global site tag (gtag.js) - Google Analytics