【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包

新建一个Demo1类,使用Transport 非静态方法 发送邮件

package com.hd.javamail;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 
 * @author H__D
 * @date 2016年12月6日 下午7:01:27
 *
 */
public class Demo1 {

    /**
     * 使用Transport 非静态方法 发送邮件
     * 连接163服务,给QQ邮箱发邮件
     */
    public static void main(String[] args) throws Exception {

        // 属性
        Properties properties = new Properties();
        // 设置认证属性
        properties.setProperty("mail.smtp.auth", "true");
        // 设置通信协议
        properties.setProperty("mail.transport.protocol", "smtp");
        // 邮件环境信息
        Session session = Session.getInstance(properties);
        // 调试,打印信息
        session.setDebug(true);

        // 邮件
        Message message = new MimeMessage(session);
        // 主题
        message.setSubject("test message");
        // 发送人
        message.setFrom(new InternetAddress("xxxx@163.com"));
        // 内容
        message.setText("this is content");

        // 邮件传输对象
        Transport transport = session.getTransport();
        // 传输连接:host,port,user,pass/主机,端口,用户名,密码
        transport.connect("smtp.163.com", 25, "xxxx@163.com", "xxxxxx");
        // 发送邮件
        transport.sendMessage(message, new Address[] { new InternetAddress("123456@qq.com") });

        // 关闭连接
        transport.close();
    }
}

4 新建一个Demo2类,使用Transport 非静态方法 发送邮件

package com.hd.javamail;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 
 * @author H__D
 * @date 2016年12月6日 下午7:05:07
 *
 */
public class Demo2 {

    /**
     * 使用Transport 静态方法 发送邮件
     * 连接163服务,给多个QQ邮箱发邮件
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // 属性对象
        Properties properties = new  Properties();
        // 开启debug调试  ,打印信息
        properties.setProperty("mail.debug", "true"); 
        // 发送服务器需要身份验证  
        properties.setProperty("mail.smtp.auth", "true");
        // 发送服务器端口,可以不设置,默认是25
        properties.setProperty("mail.smtp.port", "25");
        // 发送邮件协议名称 
        properties.setProperty("mail.transport.protocol", "smtp");
        // 设置邮件服务器主机名 
        properties.setProperty("mail.host", "smtp.163.com");
        // 环境信息
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 在session中设置账户信息,Transport发送邮件时会使用  
                return new PasswordAuthentication( "xxxx@163.com", "xxxxx");
            }
        });
        
        // 创建邮件对象  
        Message message = new MimeMessage(session);  
        //设置主题
        message.setSubject("中文主题");
        // 发件人  
        message.setFrom(new InternetAddress("xxxx@163.com"));
        // 多个收件人  
        message.setRecipients(RecipientType.TO, InternetAddress.parse("654321@qq.com,123456@qq.com"));
        // 抄送人  
        message.setRecipient(RecipientType.CC, new InternetAddress("aaaaaa@163.com"));  
        // 暗送人  
        message.setRecipient(RecipientType.BCC, new InternetAddress("bbbbbbb@163.com"));  
        // HTML内容  
        message.setContent("<span style='color:red'>中文呵呵</span>","text/html;charset=utf-8");
        
        // 连接邮件服务器、发送邮件、关闭连接,全做了  
        Transport.send(message);
        
    }
}

 

转载于:https://www.cnblogs.com/JonaLin/p/11269592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值