javamail邮件发送

1。邮件发送使用的协议:
 SMTP:(重点)
Simple Message Transfer Protocal:简单消息传输协议。发送协议。
默认使用的端口:25
 POP:
Post Office Protocal:邮局协议。接收协议。
默认使用的端口:110
2。邮件发送的过程。
这里写图片描述
3。案例:
Message:代表着一封邮件。
从wangyanming624@163.com 往 wangyanminghncj@163.com发送邮件
案例一:只有文本的邮件

package sendmail;
import java.io.FileOutputStream;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

//发送邮件
public class MessageDemo1 {

    public static void main(String[] args) throws Exception {
        Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置

        props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
        props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
//      props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
        props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关

        Session session = Session.getInstance(props);//发送邮件时使用的环境配置
        session.setDebug(true);
        MimeMessage message = new MimeMessage(session);

        //设置邮件的头
        message.setFrom(new InternetAddress("wangyanming624@163.com"));
        message.setRecipients(Message.RecipientType.TO, "wangyanminghncj@163.com");
        message.setSubject("This is only text message");
        //设置正文
        message.setContent("<h1>hello</h1>", "text/html");
//      message.setText("<h1>hello</h1>");//纯文本

        message.saveChanges();

        //发送邮件
        Transport ts = session.getTransport();
        ts.connect("wangyanming624", "your password");
        ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
    }

}

案例二:文本中内嵌图片的邮件

package sendmail;

import java.util.Properties;

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

//发送邮件
public class MessageDemo2 {

    public static void main(String[] args) throws Exception {
        Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置

        props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
        props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
//      props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
        props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关

        Session session = Session.getInstance(props);//发送邮件时使用的环境配置
        session.setDebug(true);
        MimeMessage message = new MimeMessage(session);

        //设置邮件的头
        message.setFrom(new InternetAddress("wangyanming624@163.com"));
        message.setRecipients(Message.RecipientType.TO, "wangyanminghncj@163.com");
        message.setSubject("开学通知");
        //设置正文

        //搞出文本部分
        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setContent("aaa<img src='cid:tongzhi'/>aaa", "text/html");

        //搞图片部分
        MimeBodyPart imagePart = new MimeBodyPart();
        imagePart.setContentID("tongzhi");
        //把磁盘上的文件加到part中使用到了JAF框架
        DataHandler dh = new DataHandler(new FileDataSource("src/1.jpg"));
        imagePart.setDataHandler(dh);

        MimeMultipart mp = new MimeMultipart();
        mp.addBodyPart(textPart);
        mp.addBodyPart(imagePart);
        mp.setSubType("related");//有关系的

        message.setContent(mp);
        message.saveChanges();

        //发送邮件
        Transport ts = session.getTransport();
        ts.connect("wangyanming624", "your password");
        ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
    }

}

案例三:文本中内嵌图片还有附件的邮件
这里写图片描述

package sendmail;

import java.io.FileOutputStream;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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 javax.mail.internet.MimeUtility;

//发送邮件
public class MessageDemo3 {

    public static void main(String[] args) throws Exception {
        Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置

        props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
        props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
//      props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
        props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关

        Session session = Session.getInstance(props);//发送邮件时使用的环境配置
//      session.setDebug(true);
        MimeMessage message = new MimeMessage(session);

        //设置邮件的头
        message.setFrom(new InternetAddress("wangyanming624@163.com"));
        message.setRecipients(Message.RecipientType.TO, "wangyanminghncj@163.com");
        message.setSubject("风机资料");
        //设置正文

        //搞出文本部分
        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setContent("风机<img src='cid:mm'/>aaa", "text/html;charset=UTF-8");

        //搞图片部分
        MimeBodyPart imagePart = new MimeBodyPart();
        imagePart.setContentID("mm");
        //把磁盘上的文件加到part中使用到了JAF框架
        DataHandler dh = new DataHandler(new FileDataSource("src/风机.jpg"));
        imagePart.setDataHandler(dh);

        MimeMultipart mp = new MimeMultipart();
        mp.addBodyPart(textPart);
        mp.addBodyPart(imagePart);
        mp.setSubType("related");//有关系的


        MimeBodyPart textImageParts = new MimeBodyPart();
        textImageParts.setContent(mp);

        //创建附件部分
        MimeBodyPart attachmentPart = new MimeBodyPart();
        dh = new DataHandler(new FileDataSource("src/计划.docx"));
        String filename = dh.getName();
        System.out.println("dh:"+filename);
        attachmentPart.setDataHandler(dh);
        //手工设置一下文件名
        attachmentPart.setFileName(MimeUtility.encodeText(filename));


        MimeMultipart finalMp = new MimeMultipart();
        finalMp.addBodyPart(textImageParts);
        finalMp.addBodyPart(attachmentPart);
        finalMp.setSubType("mixed");

        message.setContent(finalMp);
        message.saveChanges();

        //发送邮件
        Transport ts = session.getTransport();
        ts.connect("wangyanming624", "your password");
        ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值