邮件开发:发送程序

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("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
    
        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("xxssyyyyssxx@sohu.com")});
        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 = "xxssyyyyssxx@sohu.com";
        msg.setRecipients(RecipientType.TO, InternetAddress.parse(to));
        msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
        
        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("xxssyyyyssxx@126.com"));
        msg.setSubject("test中文");
        //抄送:在发给你的时候也给另外一个人发送一份,你知道
        //暗送:在发给你的时候也给另外一个人发送一份,你不知道
        msg.setRecipients(RecipientType.TO,
                InternetAddress.parse("熊诗言<xxssyyyyssxx@sohu.com>,yanshixiong@126.com"));
        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("xxssyyyyssxx@sohu.com"));//*/
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值