zoukankan      html  css  js  c++  java
  • JavaMail发送邮件

    发送邮件包含的内容有

    1. from字段   --用于指明发件人
    2. to字段       --用于指明收件人
    3. subject字段  --用于说明邮件主题
    4. cc字段      -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁
    5. bcc字段    -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮件密送给了谁

      邮件体指的就是邮件的具体内容。

    使用JavaMail创建邮件和发送邮件

    JavaMail创建的邮件是基于MIME协议的。因此可以使用JavaMail创建出包含图片,包含附件的复杂邮件。

    MIME协议简单介绍

    在我们的实际开发当中,一封邮件既可能包含图片,又可能包含有附件,在这样的情况下,RFC882文档规定的邮件格式就无法满足要求了。

      MIME协议是对RFC822文档的升级和补充,它描述了如何生产一封复杂的邮件。通常我们把MIME协议描述的邮件称之为MIME邮件MIME协议描述的数据称之为MIME消息。
      对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。

    JavaMail API的简单介绍

      

    发送一封只包含文本的简单邮件

      package me.gacl.main;
      
      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 Sendmail {
     
         /**
          * @param args
          * @throws Exception 
          */
         public static void main(String[] args) throws Exception {
             
             Properties prop = new Properties();
             prop.setProperty("mail.host", "smtp.sohu.com");
             prop.setProperty("mail.transport.protocol", "smtp");
             prop.setProperty("mail.smtp.auth", "true");
             //使用JavaMail发送邮件的5个步骤
             //1、创建session
             Session session = Session.getInstance(prop);
             //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
             session.setDebug(true);
             //2、通过session得到transport对象
             Transport ts = session.getTransport();
             //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
             ts.connect("smtp.sohu.com", "gacl", "邮箱密码");
             //4、创建邮件
             Message message = createSimpleMail(session);
             //5、发送邮件
             ts.sendMessage(message, message.getAllRecipients());
             ts.close();
         }
         
        
         public static MimeMessage createSimpleMail(Session session)
                 throws Exception {
             //创建邮件对象
             MimeMessage message = new MimeMessage(session);
             //指明邮件的发件人
             message.setFrom(new InternetAddress("gacl@sohu.com"));
             //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
             message.setRecipient(Message.RecipientType.TO, new InternetAddress("gacl@sohu.com"));
             //邮件的标题
             message.setSubject("只包含文本的简单邮件");
             //邮件的文本内容
             message.setContent("你好啊!", "text/html;charset=UTF-");
            //返回创建好的邮件对象
             return message;
         }
    }

    发送带图片的邮件

     package me.gacl.main;
      
      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;
     
    
     public class Sendmail {
     
       
         public static void main(String[] args) throws Exception {
                     Properties prop = new Properties();
             prop.setProperty("mail.host", "smtp.sohu.com");
             prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "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("smtp.sohu.com", "gacl", "邮箱密码");
             //4、创建邮件
             Message message = createImageMail(session);
             //5、发送邮件
             ts.sendMessage(message, message.getAllRecipients());
             ts.close();
         }
         
       
         public static MimeMessage createImageMail(Session session) throws Exception {
             //创建邮件
             MimeMessage message = new MimeMessage(session);
             // 设置邮件的基本信息
             //发件人
             message.setFrom(new InternetAddress("gacl@sohu.com"));
             //收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("xdp_gacl@sina.cn"));
             //邮件标题
             message.setSubject("带图片的邮件");
     
             // 准备邮件数据
             // 准备邮件正文数据
             MimeBodyPart text = new MimeBodyPart();
             text.setContent("这是一封邮件正文带图片<img src='cid:xxx.jpg'>的邮件", "text/html;charset=UTF-8");
             // 准备图片数据
             MimeBodyPart image = new MimeBodyPart();
             DataHandler dh = new DataHandler(new FileDataSource("src\1.jpg"));
             image.setDataHandler(dh);
             image.setContentID("xxx.jpg");
             // 描述数据关系
             MimeMultipart mm = new MimeMultipart();
             mm.addBodyPart(text);
            mm.addBodyPart(image);
             mm.setSubType("related");
     
             message.setContent(mm);
             message.saveChanges();
             //将创建好的邮件写入到E盘以文件的形式进行保存
             message.writeTo(new FileOutputStream("E:\ImageMail.eml"));
             //返回创建好的邮件
           return message;
         }
     }

    发送带附件的邮件

    package cn.bdqn;
    
    import java.io.IOException;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeUtility;
    
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public class MailWithAttachment {
        private JavaMailSender mailSender; 
        public void setMailSender(JavaMailSender mailSender) {
            this.mailSender = mailSender;
        }
        
        public void send() throws MessagingException,IOException{
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
            helper.setFrom("fsb@mail.com");
            helper.setTo("wj@mail.com");
            
            helper.setSubject("haha");
            helper.setText("嘿嘿");
         
            ClassPathResource file1 = new ClassPathResource(
                                            "/cn/bdqn/attachfiles/test.doc");
            helper.addAttachment(file1.getFilename(), file1.getFile());
            
            ClassPathResource file2 = new ClassPathResource(
                                            "/cn/bdqn/attachfiles/test.doc");
            helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());
            mailSender.send(mimeMessage);
        }
    }

     大配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="192.168.8.71"></property><!-- 服务器 -->
            <property name="port" value="25"></property><!-- 端口 -->
            <property name="username" value="fsb@mail.com"></property><!-- 用户名 -->
            <property name="password" value="fsb"></property><!-- 密码 -->
            <property name="protocol" value="smtp" ></property><!-- 协议 -->
            <property name="defaultEncoding" value="utf-8"></property><!-- 默认编码 -->
            <property name="javaMailProperties">
                <props>
                    <!-- 设置SMTP服务器需要用户验证  -->
                    <prop key="mail.smtp.auth">true</prop>
                </props>
            </property>
        </bean>
        
        <bean id="mailWithAttachment" class="cn.bdqn.MailWithAttachment">
            <property name="mailSender" ref="mailSender"></property>
        </bean>
    
    </beans>

    测试:

    package cn.bdqn;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class MailTest {
        public static void main(String[] args){
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            
            try{
                MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");
                mailWithAttach.send();
                System.out.println(0);
            }catch(Exception e){
                System.out.print(e.toString());
            }
        }
    }    
  • 相关阅读:
    集合框架学习笔记<二>
    Notepad++ Emmet安装方法教程
    vi 常用命令行
    iOS应用架构谈 view层的组织和调用方案
    搭建ssh框架项目(二)
    eclipse安装主题插件(Color Theme)
    eclipse安装properties插件
    Eclipse安装SVN插件
    搭建ssh框架项目(一)
    J2SE基础小结
  • 原文地址:https://www.cnblogs.com/Smile-123/p/6193271.html
Copyright © 2011-2022 走看看