【Mail】JavaMail介绍及发送邮件(一)

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 }
时间: 2024-11-10 01:11:04

【Mail】JavaMail介绍及发送邮件(一)的相关文章

Java Mail + 消息队列 高效率发送邮件

本文主要是讲述JavaMail 和 消息队列的一些简单应用,这是第一次写博客,有很多不足的地方希望各位看客给出宝贵建议,另外本文写的不对的地方,请各位大神勿喷!!! 很多人都会在各个系统里面遇到发送邮件的功能,这次开博写文章也是在整理过程中发现,团队中有个新来的小童鞋对发送邮件这块不是很熟,所以自己准备写一个简单的样例. 这里加了一个消息队列主要是用于高并发的情况下,对邮件发送的控制,并可以对消息进行缓存,防止消息丢失. 话不多说直接上代码: 用maven对项目进行的管理,pom.xml <de

System.net.mail 腾讯ssl发送邮件超时

我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送都换成ssl了,之前用的是25端口,现在换成了465或587,于是修改代码如下: MailMessage msgMail = new MailMessage("发件箱", "收件箱", "邮件标题", "邮件内容",2); Smt

【JavaMail】JavaMail整合RabbitMq发送邮件案例

前言 Linux安装RabbitMQ:https://www.cnblogs.com/jxd283465/p/11975094.html SpringBoot整合RabbitMQ:https://www.cnblogs.com/jxd283465/p/11975136.html 流程 代码 数据库表 CREATE TABLE `msg_log` ( `msg_id` varchar(255) NOT NULL DEFAULT '' COMMENT '消息唯一标识', `msg` text COM

Amazon SES介绍 - SES发送邮件的过程

Amazon SES,  全称Amazon Simple Email Service,即Amazon简单邮件服务,它是Amazon提供的一款供开发人员或公司企业用来处理邮件相关业务的服务,也就是说,你可以手工或通过程序来使用Amazon SES来发送电子邮件. 为什么要使用Amazon SES 通常,我们在问自己为什么要使用一个产品或服务时,我们应该要清楚,假如我们不采用该产品或服务时,我们将会采用什么手段来完成我们的任务,达到我们的目标.假如,我们开发了一个应用系统,系统里面有需要为用户.系统

Spring中javaMail通过SMTP发送邮件

public final class Emails { /** The java mail sender. */ private static JavaMailSender javaMailSender; /** * Send. * * @param emailData * the email data */ public static void send(EmailConfig.EmailData emailData) { EmailOrSmsLogEntity emailOrSmsLogEn

javax.mail 调用企业邮箱发送邮件,调用个人邮箱发送邮件

package com; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.Internet

【Mail】JavaMail发送带附件的邮件

上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入javamail.jar包,maven引用如下: 1 <!-- javamail --> 2 <dependency> 3 <groupId>javax.mail</groupId> 4 <artifactId>mail</artifactId

Hibernate SQL方言(dialect)介绍

Hibernate SQL方言 (hibernate.dialect) Spring配置文件applicationContext.xml Hibernate SQL方言 (hibernate.dialect) 数据库 hibernate方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect

Hibernate SQL方言 (hibernate.dialect) Spring配置文件applicationContext.xml

转自:http://www.cnblogs.com/wj-wangjun/archive/2009/10/21/1587624.html Hibernate SQL方言 (hibernate.dialect) 数据库 hibernate方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect