Java邮件发送

来源:互联网 发布:仙女网络语言什么意思 编辑:程序博客网 时间:2024/05/18 02:46

计算机网络课程设计竟然是设计邮件系统…晕唉。

邮箱服务涉及SMTP,POP3,MIME等协议,要是让我从最底层去实现,很明显不可能呀[捂脸]

站在前辈的肩上,可以少走很多弯路!

参考资料

  1. http://blog.csdn.net/ghsau/article/details/17839983
  2. https://www.cnblogs.com/xdp-gacl/p/4216311.html

图片来源参考资料2

这里写图片描述

这里写图片描述

这里写图片描述

所需jar包maven依赖

<!-- https://mvnrepository.com/artifact/javax.mail/mail --><dependency>    <groupId>javax.mail</groupId>    <artifactId>mail</artifactId>    <version>1.4.7</version></dependency>

具体实现邮件发送

package com.wy.action;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;/** * 发送图片邮件 * @author 沪旦铭 * */public class SendEmail {     //用于给用户发送邮件的邮箱     private static String from = "";     //接收人邮箱     private static String to = "";     //邮箱的用户名  这个和from一样的内容     private static String username = "";     //邮箱的密码  注意这个密码     private static String password = "";     //发送邮件的服务器地址     private static String host = "smtp.163.com";    public static void main(String[] args) throws Exception {        Properties prop = new Properties();        // 设置邮件服务器主机名          prop.setProperty("mail.host", host);        // 发送邮件协议名称        prop.setProperty("mail.transport.protocol", "smtp");        // 发送服务器需要身份验证          prop.setProperty("mail.smtp.auth", "true");        // 开启debug调试          prop.setProperty("mail.debug", "true");          //使用JavaMail发送邮件的5个步骤        //1、创建session        Session session = Session.getInstance(prop);        //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态        session.setDebug(true);        //2、通过session得到transport对象        Transport ts = session.getTransport();        //3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证        ts.connect(host, SendEmail.username,SendEmail.password );        //4、创建邮件        //4.1创建图片邮件//      Message message = createImageMail(session);        //4.2创建附件邮件//      Message message = createAttachMail(session);        //4.3创建图片和附件邮件        Message message = createMixedMail(session);        //5、发送邮件        ts.sendMessage(message, message.getAllRecipients());        ts.close();    }    //创建还有图片的邮件    private static Message createImageMail(Session session) throws AddressException, MessagingException, FileNotFoundException, IOException {        //创建邮件        Message message = new MimeMessage( session );        //设置邮件基本信息        message.setFrom(new InternetAddress( SendEmail.from ));        //收件人 Message.RecipientType.TO        //Message.RecipientType.BCC 密送人 (即抄送人不知道)        //Message.RecipientType.CC 抄送人        message.setRecipient(Message.RecipientType.TO, new InternetAddress( SendEmail.to));        //设置邮箱主题|邮箱标题        message.setSubject("这是一张图片");        //准备邮件正文数据        MimeBodyPart  part = new MimeBodyPart();        part.setContent("这是一封有图片的邮件<img src='cid:1.jpg'>", "text/html;charset=UTF-8");        //准备图片数据        MimeBodyPart image = new MimeBodyPart();        DataHandler dh = new DataHandler(new FileDataSource("g://header.jpg"));        image.setDataHandler(dh);        image.setContentID("1.jpg");        //描述数据关系        MimeMultipart mm = new MimeMultipart();        mm.addBodyPart(part);        mm.addBodyPart(image);        mm.setSubType("related");        message.setContent(mm);        message.saveChanges();        //保存邮件到本地        message.writeTo( new FileOutputStream("g://imageEmail.eml") );        return message;    }    //附件邮件发送    public static MimeMessage createAttachMail(Session session) throws Exception{        //创建邮件        MimeMessage message = new MimeMessage( session );        //设置邮件基本信息        message.setFrom(new InternetAddress( SendEmail.from ));        //收件人        message.setRecipient(Message.RecipientType.TO, new InternetAddress(SendEmail.to));        //设置邮箱主题|邮箱标题        message.setSubject("附件邮件发送");        //创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码        MimeBodyPart text = new MimeBodyPart();        text.setContent("使用JavaMail创建的带附件的邮件", "text/html;charset=UTF-8");        //创建邮件附件        MimeBodyPart attach = new MimeBodyPart();                 attach.attachFile("g://header.jpg");        //创建容器描述数据关系        MimeMultipart mp = new MimeMultipart();        mp.addBodyPart(text);        mp.addBodyPart(attach);        mp.setSubType("mixed");        message.setContent(mp);        message.saveChanges();        //将创建的Email写入到g盘存储        message.writeTo(new FileOutputStream("g://attachMail.eml"));        //返回生成的邮件        return message;     }    //创建图片和附件邮件    private static MimeMessage  createMixedMail(Session session) throws AddressException, MessagingException, IOException {        //创建邮件        MimeMessage message = new MimeMessage( session );        //设置邮件基本信息        message.setFrom(new InternetAddress( SendEmail.from ));        //收件人        message.setRecipient(Message.RecipientType.TO, new InternetAddress(SendEmail.to));        //设置邮箱主题|邮箱标题        message.setSubject("图片和附件邮件发送");        //准备邮件正文数据        MimeBodyPart  text = new MimeBodyPart();        text.setContent("这是图片邮件,当然包括附件<img src='cid:1.jpg'>", "text/html;charset=UTF-8");        //准备图片数据        MimeBodyPart image = new MimeBodyPart();        DataHandler dh = new DataHandler(new FileDataSource("g://header.jpg"));        image.setDataHandler(dh);        image.setContentID("1.jpg");        //创建邮件附件        MimeBodyPart attach = new MimeBodyPart();                 attach.attachFile("g://header.jpg");        //创建容器描述数据关系        MimeMultipart mp = new MimeMultipart();        mp.addBodyPart(text);        mp.addBodyPart(image);        mp.addBodyPart(attach);        mp.setSubType("mixed");        message.setContent(mp);        message.saveChanges();        return message;    }}
原创粉丝点击