发送邮件

JavaMail实现发送邮件

  • 是java提供的一组API,用来发送和接受邮件
  • jar包:mail.jar和actvition.jar
邮件协议概述:
  • SMTP:发送邮件协议(主要使用它)
  • POP3:接受邮件的协议
  • IMAP:即可发送邮件又能接受协议。

  • SMTP的端口号:25 , POP3的端口号:110

核心类:
  • Session
    如果你得到他,表示已经与服务器连接上了,与Connection作用相似!
    需要使用Session.getInstance(Properties, Authericator);

  • MimeMessage
    他表示一个邮件对象,你可以调用他的setForm(),设置发件人、设置收件人、设置主题、设置正文

  • TransPort
    它只要一个功能,发邮件

具体步骤:
  • 第一步;获得Session
    Session session=Session.getInstance(Properties prop, Authericator auth);
    其中prop需要指定两个键值,一个是指定服务器主机名,另一个是指定是否需要认证!我们当然需要认证!

    Properties prop=new Properties();
    //设置两个属性
    prop.setProperty("mail.host","smtp.163.com");//设置服务器主机名
    prop.setProperty("mail.smpt.auth","true");    //设置需要认证
    其中Authenticator是一个接口表示认证器,即校验客户端的身份。我们需要自己来实现这个接口,实现这个接口需要使用账户和密码
    Authenticator auth=new Authenticator(){   //定义抽象的认证类
        public PasswordAuthentication getPasswordAuthentication(){  //获取密码认证
            new PasswordAuthentication("itcast_cxf","itcast");    //设置用户名和密码
        }
    }
    通过上面的准备,现在可以获取的Session对象了
    Session session =Session.getInstance(prop,auth);
    
  • 第二步:创建MimeMessage对象
    创建MimeMessage需要使用Session对象来创建
    MimeMessage msg=new MimeMessage(session);
    然后需要设置发信人地址、收信人地址、主体、以及邮件正文
    msg.setFrom(new InternetAddress(2454357215@qq.com)); //设置发信人
    msg.setRecipients(RecipientType.To,”itcast@qq.com,itcast@sina.com”) //设置多个收信人
    msg.addRecipients(RecipientType.CC,”itcast@qq.com,itcast@sina.com”) //设置多个抄送
    msg.addRecipients(RecipientType.BCC,”itcast@qq.com,itcast@sina.com”) //设置多个暗送
    msg.setSubject(“这是一封测试邮件”); //设置主题(标题)
    msg.setContent(“hello word!”,”text/html;charset=utf-8”); //设置正文
    Tansport.send(msg); //发送邮件

案例1:发送普通邮件

public void fun() throws AddressException, MessagingException{
        //1、得到session
        Properties props = new Properties();
        props.setProperty("mail.host","smtp.163.com");//设置服务器主机(smtp.xxx.com)
        props.setProperty("mail.smtp.auth","true");//设置是否需要认证
        Authenticator auth=new Authenticator(){//设置用户和密码
            protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("enjoy_life_mc","machen960702");
            };
        };
        Session session=Session.getInstance(props, auth);  //与服务器连接上
        //创建MimeMessage
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("enjoy_life_mc@163.com")); //设置发件人
        message.setRecipients(RecipientType.TO, "2454357215@qq.com"); //设置收件人
        message.setRecipients(RecipientType.CC, "enjoy_life_mc@162.com"); //设置抄送
        message.setRecipients(RecipientType.BCC, "enjoy_life_mc@sina.com");//设置暗送

        message.setSubject("你好");//邮件标题
        message.setContent("这就是一封垃圾邮件","text/html;charset=utf-8");//邮件内容

        //3、发送
        Transport.send(message);
    }

案例2:发送带有附件的邮件

     当发送包含附件的邮件时,邮件体就是多部件形式!
     1、创建一个多部件的部件内容!MimeMultipart
            MimeMultipart就是一个集合,用来装填多个主体部件
     2、我们需要两个主体部件,一个是文本内容,另一个是附件
            主体部件叫MimeBodyPart
     3、给MimeMultipart设置给MimeMessage的内容! 
public void fun3() throws AddressException, MessagingException, IOException{
        //1、得到session
        Properties props = new Properties();
        props.setProperty("mail.host","smtp.163.com");//设置服务器主机(smtp.xxx.com)
        props.setProperty("mail.smtp.auth","true");//设置是否需要认证
        Authenticator auth=new Authenticator(){
            protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("enjoy_life_mc","machen960702");
            };
        };
        Session session=Session.getInstance(props, auth);  //与服务器连接上

        //创建MimeMessage
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("enjoy_life_mc@163.com")); //设置发件人
        message.setRecipients(RecipientType.CC, "enjoy_life_mc@162.com");  //设置收件人

        message.setSubject("这是一封带有附加的邮件");
        message.setContent("这就是一封垃圾邮件","text/html;charset=utf-8");

        MimeMultipart list=new MimeMultipart();   //创建一个多部件

        //创建一个MimeBodyPart
        MimeBodyPart part1=new MimeBodyPart();
        part1.setContent("最近好吗?", "text/html;charset=utf-8");     //设置主体内容
        list.addBodyPart(part1);                                     //把主体部件添加到集合中

        //创建一个MimeBodyPart
        MimeBodyPart part2=new MimeBodyPart();
        part2.attachFile(new File("f:/白冰。jpg"));                //设置附件的内容
        part2.setFileName(MimeUtility.encodeText("大美女.jpg")); //设置显示的文件名称,其中encodeText用来处理中文乱码问题
        list.addBodyPart(part2);
        //3、发送
        Transport.send(message);
    }
MailUtils小工具的使用
  • 需要的jar包:mail.jar和activation.jar和itcast-tool.jar
  • 作用:能更加便捷的发送普通邮件和待附件的邮件

案例(发送普通邮件):

public void fun2() throws MessagingException, IOException{
        //1、得到session
        Session session = MailUtils.createSession("smpt.163.com", "enjoy_life_mc@163.com","machen960702");
        //2、创建邮件对象
        Mail mail = new Mail("enjoy_life_mc@163.com","enjoy_life_mc@162.com","标题:问候","正文:你好吗?");
        //3、发送邮件
        MailUtils.send(session, mail);

    }

案例(发送带有附件的邮件):

public void fun2() throws MessagingException, IOException{
        //1、得到session
        Session session = MailUtils.createSession("smpt.163.com", "enjoy_life_mc@163.com","machen960702");
        //2、创建邮件对象
        Mail mail = new Mail("enjoy_life_mc@163.com","enjoy_life_mc@162.com","标题:问候","正文:你好吗?");

        //创建附件对象
        AttachBean attach = new AttachBean(new File("f:/白冰.jpg"),"小美女.jpg");

        //添加附件到mail中
        mail.addAttach(attach);

        //3、发送邮件
        MailUtils.send(session, mail);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值