首页 > 编程语言 >java邮件开发详解(一)

java邮件开发详解(一)

时间:2022-09-06 15:33:52浏览次数:90  
标签:java 详解 import mail message com javax 邮件

  地址:https://www.cnblogs.com/h--d/p/6138810.html

JavaMail介绍

   JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。虽然JavaMail(仅支持JDK4及以上)也是Java的API之一,但是却没有直接加入到JDK中,所以我们需要另行下载。另外,JavaMail依赖JAF(JavaBeans Activation Framework),JAF在Java6之后已经合并到JDK中,而JDK5之前需要另外下载JAF的类库。

  JavaMail下载地址:http://www.oracle.com/technetwork/java/javamail/index.html

JavaMail发送邮件

  邮件的方发送过程可以参照:【Mail】telnet收发邮件过程;本例中主要流程是:先创建一个Message(邮件对象),然后使用Transport(邮件传输对象)发邮件发送到邮件服务器。

  1. 先新建一个javaweb的maven项目。参照:【Maven】Eclipse 使用Maven创建Java Web项目
  2. 在pom文件中,引入javamail.jar包

     

  3. 新建一个Demo1类,使用Transport 非静态方法 发送邮件
    复制代码
     1 package com.hd.javamail;
     2 
     3 import java.util.Properties;
     4 
     5 import javax.mail.Address;
     6 import javax.mail.Message;
     7 import javax.mail.Session;
     8 import javax.mail.Transport;
     9 import javax.mail.internet.InternetAddress;
    10 import javax.mail.internet.MimeMessage;
    11 
    12 /**
    13  * 
    14  * @author H__D
    15  * @date 2016年12月6日 下午7:01:27
    16  *
    17  */
    18 public class Demo1 {
    19 
    20     /**
    21      * 使用Transport 非静态方法 发送邮件
    22      * 连接163服务,给QQ邮箱发邮件
    23      */
    24     public static void main(String[] args) throws Exception {
    25 
    26         // 属性
    27         Properties properties = new Properties();
    28         // 设置认证属性
    29         properties.setProperty("mail.smtp.auth", "true");
    30         // 设置通信协议
    31         properties.setProperty("mail.transport.protocol", "smtp");
    32         // 邮件环境信息
    33         Session session = Session.getInstance(properties);
    34         // 调试,打印信息
    35         session.setDebug(true);
    36 
    37         // 邮件
    38         Message message = new MimeMessage(session);
    39         // 主题
    40         message.setSubject("test message");
    41         // 发送人
    42         message.setFrom(new InternetAddress("[email protected]"));
    43         // 内容
    44         message.setText("this is content");
    45 
    46         // 邮件传输对象
    47         Transport transport = session.getTransport();
    48         // 传输连接:host,port,user,pass/主机,端口,用户名,密码
    49         transport.connect("smtp.163.com", 25, "[email protected]", "xxxxxx");
    50         // 发送邮件
    51         transport.sendMessage(message, new Address[] { new InternetAddress("[email protected]") });
    52 
    53         // 关闭连接
    54         transport.close();
    55     }
    56 }
    复制代码
  4. 新建一个Demo2类,使用Transport 非静态方法 发送邮件
    复制代码
     1 package com.hd.javamail;
     2 
     3 import java.util.Properties;
     4 
     5 import javax.mail.Authenticator;
     6 import javax.mail.Message;
     7 import javax.mail.Message.RecipientType;
     8 import javax.mail.PasswordAuthentication;
     9 import javax.mail.Session;
    10 import javax.mail.Transport;
    11 import javax.mail.internet.InternetAddress;
    12 import javax.mail.internet.MimeMessage;
    13 
    14 /**
    15  * 
    16  * @author H__D
    17  * @date 2016年12月6日 下午7:05:07
    18  *
    19  */
    20 public class Demo2 {
    21 
    22     /**
    23      * 使用Transport 静态方法 发送邮件
    24      * 连接163服务,给多个QQ邮箱发邮件
    25      * @param args
    26      * @throws Exception
    27      */
    28     public static void main(String[] args) throws Exception {
    29         // 属性对象
    30         Properties properties = new  Properties();
    31         // 开启debug调试  ,打印信息
    32         properties.setProperty("mail.debug", "true"); 
    33         // 发送服务器需要身份验证  
    34         properties.setProperty("mail.smtp.auth", "true");
    35         // 发送服务器端口,可以不设置,默认是25
    36         properties.setProperty("mail.smtp.port", "25");
    37         // 发送邮件协议名称 
    38         properties.setProperty("mail.transport.protocol", "smtp");
    39         // 设置邮件服务器主机名 
    40         properties.setProperty("mail.host", "smtp.163.com");
    41         // 环境信息
    42         Session session = Session.getInstance(properties, new Authenticator() {
    43             @Override
    44             protected PasswordAuthentication getPasswordAuthentication() {
    45                 // 在session中设置账户信息,Transport发送邮件时会使用  
    46                 return new PasswordAuthentication( "[email protected]", "xxxxx");
    47             }
    48         });
    49         
    50         // 创建邮件对象  
    51         Message message = new MimeMessage(session);  
    52         //设置主题
    53         message.setSubject("中文主题");
    54         // 发件人  
    55         message.setFrom(new InternetAddress("[email protected]"));
    56         // 多个收件人  
    57         message.setRecipients(RecipientType.TO, InternetAddress.parse("[email protected],[email protected]"));
    58         // 抄送人  
    59         message.setRecipient(RecipientType.CC, new InternetAddress("[email protected]"));  
    60         // 暗送人  
    61         message.setRecipient(RecipientType.BCC, new InternetAddress("[email protected]"));  
    62         // HTML内容  
    63         message.setContent("<span style='color:red'>中文呵呵</span>","text/html;charset=utf-8");
    64         
    65         // 连接邮件服务器、发送邮件、关闭连接,全做了  
    66         Transport.send(message);
    67         
    68     }
    69 }
    复制代码
  5. 使用 465端口 发送邮件,且使用ssl认证 发送邮件 复制代码
     1 package com.hd.javamail;
     2 
     3 import java.util.Properties;
     4 
     5 import javax.mail.Authenticator;
     6 import javax.mail.Message;
     7 import javax.mail.Message.RecipientType;
     8 import javax.mail.PasswordAuthentication;
     9 import javax.mail.Session;
    10 import javax.mail.Transport;
    11 import javax.mail.internet.InternetAddress;
    12 import javax.mail.internet.MimeMessage;
    13 
    14 /**
    15  * 
    16  * @author H__D
    17  * @date 2019年11月28日 下午7:05:07
    18  *
    19  */
    20 public class Demo3 {
    21 
    22     /**
    23      * 由于国际与国内均对垃圾邮件进行严格管控,很如服务器的25端口被禁用了
    24      * 下面介绍使用465端口发送邮件
    25      * 使用Transport 静态方法 发送邮件
    26      * 连接163服务,给多个QQ邮箱发邮件
    27      * @param args
    28      * @throws Exception
    29      */
    30     public static void main(String[] args) throws Exception {
    31         // 属性对象
    32         Properties properties = new  Properties();
    33         // 开启debug调试  ,打印信息
    34         properties.setProperty("mail.debug", "true"); 
    35         // 发送服务器需要身份验证  
    36         properties.setProperty("mail.smtp.auth", "true");
    37         // 使用ssl认证
    38         properties.setProperty("mail.smtp.ssl.enable", "true");
    39         // 发送服务器端口,可以不设置,默认是25
    40         properties.setProperty("mail.smtp.port", "465");
    41         // 发送邮件协议名称 
    42         properties.setProperty("mail.transport.protocol", "smtp");
    43         // 设置邮件服务器主机名 
    44         properties.setProperty("mail.host", "smtp.163.com");
    45         // 环境信息
    46         Session session = Session.getInstance(properties, new Authenticator() {
    47             @Override
    48             protected PasswordAuthentication getPasswordAuthentication() {
    49                 // 在session中设置账户信息,Transport发送邮件时会使用  
    50                 return new PasswordAuthentication( "[email protected]", "xxxxx");
    51             }
    52         });
    53         
    54         // 创建邮件对象  
    55         Message message = new MimeMessage(session);  
    56         //设置主题
    57         message.setSubject("中文主题");
    58         // 发件人  
    59         message.setFrom(new InternetAddress("[email protected]"));
    60         // 多个收件人  
    61         message.setRecipients(RecipientType.TO, InternetAddress.parse("[email protected],[email protected]"));
    62         // 抄送人  
    63         message.setRecipient(RecipientType.CC, new InternetAddress("[email protected]"));  
    64         // 暗送人  
    65         message.setRecipient(RecipientType.BCC, new InternetAddress("[email protected]"));  
    66         // HTML内容  
    67         message.setContent("<span style='color:red'>中文呵呵</span>","text/html;charset=utf-8");
    68         
    69         // 连接邮件服务器、发送邮件、关闭连接,全做了  
    70         Transport.send(message);
    71         
    72     }
    73 }

标签:java,详解,import,mail,message,com,javax,邮件
From: https://www.cnblogs.com/mark5/p/16661985.html

相关文章

  • 【Java基础】方法重写Override
    1.什么是方法重写子类对父类中同名同参数的方法进行重写覆盖。publicclassPerson{publicvoidsay(){System.out.println("父类中的方法");}}......
  • .net core 利用qq发送邮件
    1、进入qq邮箱首页,点击设置   2、点击 账户 选项卡,划到大概中间部分,有一个服务选项区。经实验开启前两个就可以了。 3、点击下方的 生成授权码,在开启服务之......
  • Java-
    基本数据类型:1基本类型:byte二进制位数:8一个字节8个bit位2包装类:java.lang.Byte3最小值:Byte.MIN_VALUE=-1284最大值:Byte.MAX_VALUE=127 1基本类型:short......
  • 【Wi-Fi 802.11协议】管理帧 之 Beacon帧详解
    Beacon帧简介信标帧,由AP以一定的时间间隔周期性发出,以此来告诉外界自己无线网络的存在。Beacon帧组成下图为Beacon帧的组成下图为抓包所得(AP为2.4g11n模式),PacketInfo......
  • java复习随笔(十三)——Stream流
    Stream流的生成方式Stream流的使用生成流通过数据源(集合,数组)生成流list.stream()中间操作一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的......
  • 肖sir__java__图集
    (1)修饰符Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:访问控制修饰符:default,public,protected,private非访问控制修饰符:final,abstract,sta......
  • java List排序
    2.1新建Comparator比较器List<Person>list=newArrayList<Person>(){};Collections.sort(list,newPersonComparator());classPersonComparatorimplements......
  • 2022最全Hbuilder打包成苹果IOS-App的详解
     本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。介绍一下个人开发者账号:再说下什么是免费的苹果开发者账号,就是你没交688年费的就是免费账号,如果你......
  • 2022最新iOS打包、发布与证书体系详解
     教程截图:iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人–AdamEberbach。BundleidentifierprovisioningprofilesAppIDcertificatesignin......
  • 金九银十,收下这份 Java String 面试题
    请点赞关注,你的支持对我意义重大。......