邮件开发:发送程序

邮件开发:发送程序_第1张图片

l 使用 JavaMail 发送一封简单的邮件
Ø创建包含邮件服务器的网络连接信息的Session对象。
Ø创建代表邮件内容的Message对象。
Ø创建Transport对象、连接服务器、发送Message、关闭连接。
l 应用 Authenticator 类实现用户信息验证
Ø 结合 Transport.send 静态方法使用。



public class MailSender_simple {
    public static void main(String[] args) throws Exception{
        Properties props = new Properties();
        props.setProperty("mail.smtp.auth", "true");//设置需要认证,来源于邮件协议,在文档中也有
        props.setProperty("mail.transport.protocol", "smtp");//设置协议

        
        /**
         * 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
         */
        Session session = Session.getInstance(props);//3准备环境
        session.setDebug(true);//把所有的调试信息打出来
        
        Message msg = new MimeMessage(session);//1制造邮件、卫星
        msg.setSubject("test from javamail");
        msg.setText("test from javamail");//简单的文本
        /**
         * 需要与你登陆的一致,否则不成功
         */
        msg.setFrom(new InternetAddress("[email protected]"));//给邮件阅读器使用的
    
        Transport transport = session.getTransport();//2制造发射器、火箭
//        transport.connect("smtp.sohu.com",25,"xxssyyyyssxx","xsy881026");
        transport.connect("smtp.126.com",25,"xxssyyyyssxx","xsy881026");
        //一般情况下只需要使用静态方法send,但是如果需要发送给多个人,就需要使用这种方法,先connnect    ,再发送
        //收件人也是如此
        transport.sendMessage(msg,new Address[]{new InternetAddress("[email protected]")});
        transport.close();
    }

}







/**
 * 具有smtp功能的发送器
 * @author 熊诗言
 *
 */
public class SMTPMailSender {
    public static void main(String[] args) throws Exception{
//        System.setProperty("socksProxyHost", "proxy2.lh.petrochina");
//        System.setProperty("socksProxyPort", "8080");

        Properties props = new Properties();
        props.setProperty("mail.smtp.localhost", "mail.xsy.com");//其他服务器用于去顶主机身份
        props.setProperty("mail.transport.protocol", "smtp");//设置协议
        
        /**
         * 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
         */
        Session session = Session.getInstance(props);//3准备环境
        session.setDebug(true);//把所有的调试信息打出来
        
        Message msg = new MimeMessage(session);//1制造邮件、卫星
        msg.setSubject("test from javamail");
        msg.setText("test from javamail");//简单的文本
        String to = "[email protected]";
        msg.setRecipients(RecipientType.TO, InternetAddress.parse(to));
        msg.setFrom(new InternetAddress("[email protected]"));//给邮件阅读器使用的
        
        msg.saveChanges();
    
        Transport transport = session.getTransport("smtp");//2制造发射器、火箭
        String domain = to.substring(to.indexOf("@")+1);
        String server = getSMTPServer(domain,null);
        transport.connect(server,25,null,null);
        transport.sendMessage(msg,msg.getAllRecipients());
        transport.close();
    }

    private static String getSMTPServer(String domain, String dnsServer) throws NamingException {
        DirContext dirContext = new InitialDirContext();
        Attributes mxAttribute = null;
        if(dnsServer!=null){
            mxAttribute = dirContext.getAttributes("dns:"+dnsServer+"/"+domain,
                new String[]{"MX"});
        }else {
            mxAttribute = dirContext.getAttributes("dns:"+"/"+domain,
                    new String[]{"MX"});
        }
        String record = (String) mxAttribute.get("MX").get();
        String smtp = record.substring(record.indexOf(" ") + 1);
        return smtp;
    }

}






public class MailSender_auth_send {
    public static void main(String[] args) throws Exception{
        Properties props = new Properties();
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", "smtp.126.com");
        Session session = Session.getInstance(props,
                new Authenticator()
                {
                    @Override/*策略模式,代码封装*/
                    protected PasswordAuthentication getPasswordAuthentication()
                    {
                        return new PasswordAuthentication("xxssyyyyssxx","xsy881026");
                    }
                }
        );

        session.setDebug(true);
        
        //*
        Message msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress("[email protected]"));
        msg.setSubject("test中文");
        //抄送:在发给你的时候也给另外一个人发送一份,你知道
        //暗送:在发给你的时候也给另外一个人发送一份,你不知道
        msg.setRecipients(RecipientType.TO,
                InternetAddress.parse("熊诗言<[email protected]>,[email protected]"));
        msg.setContent("<span style='color:red'>中文</span>", "text/html;charset=gbk");
        
        
        Transport.send(msg);//*/
        
        /*
        //直接发送一封写好的邮件,这个由邮件客户端生成
        Message msg = new MimeMessage(session,new FileInputStream("D:\\WorkSpace\\javamail\\classesresouce\\demo3.eml"));
        Transport.send(msg,InternetAddress.parse("[email protected]"));//*/
    }

}



你可能感兴趣的:(邮件开发:发送程序)