package MailSendPkg; 


/*import ext.leetcode.easy.Seven;*/ 

import javax.mail.*; 

import javax.mail.internet.*; 

import java.util.*; 

import javax.activation.*; 


public class MailSender { 


    private String host = ""; // smtp服务器 

    private String from = ""; // 发件人地址 

    private String to = "";   // 收件人地址 

    private String affix = ""; // 附件地址 

    private String affixName = ""; // 附件名称 

    private String user = "";      // 用户名 

    private String pwd = "";       // 密码 

    private String subject = "";   // 邮件标题 


    public void setAddress(String from, String to, String subject) { 

        this.from = from; 

        this.to = to; 

        this.subject = subject; 

    } 


    public void setAffix(String affix, String affixName) { 

        this.affix = affix; 

        this.affixName = affixName; 

    } 


    public void send(String host, String user, String pwd) { 

        this.host = host; 

        this.user = user; 

        this.pwd = pwd; 


        Properties props = new Properties(); 


        // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器) 

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

        // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条) 

        props.put("mail.smtp.auth", "true"); 


        // 用刚刚设置好的props对象构建一个session 

        Session session = Session.getDefaultInstance(props); 


        // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使 

        // 用(你可以在控制台(console)上看到发送邮件的过程) 

        session.setDebug(true); 


        // 用session为参数定义消息对象 


        MimeMessage message = new MimeMessage(session); 

        try { 

            // 加载发件人地址 

            message.setFrom(new InternetAddress(from)); 

            // 加载收件人地址 

            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 

            // 加载标题 

            message.setSubject(subject); 


            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 

            Multipart multipart = new MimeMultipart(); 


            // 设置邮件的文本内容 

            BodyPart contentPart = new MimeBodyPart(); 

            contentPart.setText("邮件的具体内容在此,/n/r"); 

            multipart.addBodyPart(contentPart); 


            contentPart.setText("邮件的具体内容在此2,/n/r"); 

            multipart.addBodyPart(contentPart); 


            contentPart.setText("邮件的具体内容在此3/n/r"); 

            multipart.addBodyPart(contentPart); 


            // 添加附件 

            BodyPart messageBodyPart = new MimeBodyPart(); 

            DataSource source = new FileDataSource(affix); 

            // 添加附件的内容 

            messageBodyPart.setDataHandler(new DataHandler(source)); 

            // 添加附件的标题 

            // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码 


            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); 

            messageBodyPart.setFileName("=?GBK?B?" + enc.encode(affixName.getBytes()) + "?="); 

            multipart.addBodyPart(messageBodyPart); 


            // 将multipart对象放到message中 

            message.setContent(multipart); 

            // 保存邮件 

            message.saveChanges(); 

            // 发送邮件 

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

            // 连接服务器的邮箱 

            transport.connect(host, user, pwd); 

            // 把邮件发送出去 

            transport.sendMessage(message, message.getAllRecipients()); 

            transport.close(); 

        } catch (Exception e) { 

            e.printStackTrace(); 

        } 

    } 


    public static void main(String[] args) { 

        String mail_to_addr; 

        String affix_name; 

        mail_to_addr = ""; 

        affix_name = ""; 

        if (args.length >= 2) { 

            mail_to_addr = args[0].toString(); 

            affix_name = args[1].toString(); 

            MailSender cn = new MailSender(); 

            // 设置发件人地址、收件人地址和邮件标题 

            // cn.setAddress("xxx@xxx.xxx.xxx","xxx@xxx.xxx.xxx","我是 用JAVA发送的测试邮件"); 

            cn.setAddress("xxx@xxx.xxx.xxx",, mail_to_addr, "我是 用JAVA发送的测试邮件"); 

            // 设置要发送附件的位置和标题 

            //cn.setAffix("d:/a.doc", "我是附件.doc"); 

            cn.setAffix(affix_name, "我是附件.doc"); 

            // 设置smtp服务器以及邮箱的帐号和密码 

            try { 

                cn.send("xxx.xxx.com.cn", "xxxxx", "xxxxx"); 

            } catch (Exception e) { 

            } 

        } 

    }