Java Mail邮件发送的简单实现

1、什么是java mail

  JAVA MAIL是利用现有的邮件账户发送邮件的工具,通过JAVA Mail的操控,让程序自动的使用设置的邮箱发送邮件。

这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。

2、邮件发送的大致过程

  1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。
此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。
  2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。
  3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。
Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。
  4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。
  5、使用javax.mail.Transport工具类发送邮件。

3、准备工作

  下载JavaMail jar包,导入工程。

  http://www.oracle.com/technetwork/java/javamail/index-138643.html

4、案例代码

MyEmailAutherticator.java

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyEmailAutherticator extends Authenticator {

    //用户名(登录邮箱)
    private String username;

    //密码
    private String password;

    public MyEmailAutherticator() {
        super();
    }

    //初始化邮箱和密码
    public MyEmailAutherticator(String username, String password) {
        this.username = username;
        this.password = password;
    }

    //用作登录校验,以确保对该邮箱有发送邮件的权利
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }

    //set and get method
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Mail.java

import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Mail {

    //发送邮件的帐号和密码
    private String username="[email protected]";

    private String password="xxxxxx";

    private String host = "smtp.qq.com";

    private String mail_head_name = "this is head of this mail";

    private String mail_head_value = "this is head of this mail";

    private String mail_to = "[email protected]";

    private String mail_from = "[email protected]";

    private String mail_subject = "this is the subject of this test mail";

    private String mail_body = "this is mail_body of this test mail";

    private String personalName = "我的邮件";

    public void sendMail() throws SendFailedException{
        try {
             //发送邮件的props文件
            Properties props = new Properties();
            // 初始化props
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true");
            System.out.println(props);

            //进行邮件服务用户认证
            Authenticator auth = new MyEmailAutherticator(username,password);

            // 创建session,和邮件服务器进行通讯
            Session session = Session.getDefaultInstance(props,auth);

            // 创建mime类型邮件
            MimeMessage message = new MimeMessage(session);
            //设置邮件格式
            message.setContent("Hello","text/html;charset=utf-8");
            // 设置主题
            message.setSubject(mail_subject);
            //设置邮件内容
            message.setText(mail_body);
            //设置邮件标题
            message.setHeader(mail_head_name, mail_head_value);
            message.setSentDate(new Date());//设置邮件发送时期
            Address address = new InternetAddress(mail_from,personalName);
            //设置邮件发送者的地址
            message.setFrom(address);

            //======单发邮件======
            //设置邮件接收者的地址
            Address toaddress = new InternetAddress(mail_to);
            // 设置收件人
            message.addRecipient(Message.RecipientType.TO,toaddress);

            //======群发邮件======
//            List<String> recipients = new ArrayList<String>();
//            recipients.add("[email protected]");
//            recipients.add("[email protected]");
//            final int num = recipients.size();
//            InternetAddress[] addresses = new InternetAddress[num];
//            for (int i = 0; i < num; i++) {
//                addresses[i] = new InternetAddress(recipients.get(i));
//            }
//            message.setRecipients(Message.RecipientType.TO, addresses);

            System.out.println(message);
            // 发送邮件
            Transport.send(message);
            System.out.println("Send Mail Ok!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Test.java

public class Test {

    public static void main(String[] args) {
        Mail m = new Mail();
        try {
            m.sendMail();
        } catch (Exception e) {

        }
    }
}
时间: 2024-10-06 00:40:15

Java Mail邮件发送的简单实现的相关文章

java mail邮件发送(带附件) 支持SSL

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的server的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 pr

java mail邮件发送(带附件)

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 priva

java mail 邮件发送实例【搬】

说明:转自国外博客:欢迎查阅原作 该实例较新,简明易懂,值得新手借鉴 以gmail为例,注意: 1.通过TLS方式发送 1 package com.mkyong.common; 2 3 import java.util.Properties; 4 5 import javax.mail.Message; 6 import javax.mail.MessagingException; 7 import javax.mail.PasswordAuthentication; 8 import java

JAVA邮件发送的简单实现

JAVA邮件发送的简单实现 JAVA邮件发送的简单实现 JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注册激活和垃圾邮件的发送等方面. JavaMail可以到http://www.oracle.com/technetwork/java/javamail/index-138643.html进行下载,并将mail.jar添加到classpath即可.

基于JavaMail的Java邮件发送:简单邮件发送

http://blog.csdn.net/xietansheng/article/details/51673073 http://www.cnblogs.com/codeplus/archive/2011/10/30/2229391.html http://blog.csdn.net/ghsau/article/details/17839983 ******************** 电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信

java 实现 email 邮件发送最简单优雅的方式(网易 163 为例)

如何使用IMAP服务? 首先介绍一些邮件发送的基础知识,如果你已经知道可以跳过. 直接到 Email 邮件发送实现的部分. IMAP是什么? IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息.下载邮件等. IMAP与POP类似,都是一种邮件获取协议. IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件.标记已读等),这是不会反馈到服务

纯java实现邮件发送服务(亲测好用)

今天自己测试了一下用java代码实现发送有限的服务,非常简单.直接贴代码: import com.sun.mail.util.MailSSLSocketFactory; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.security.GeneralSecurityException; import java.u

Java网络编程:利用Java mail包发送电子邮件

下面代码是利用Java mail包封装了一个发送邮件的类 import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Me

spring实现java的邮件发送

由于项目需要使用邮件发送,所以最近学习了一下利用spring机制来发送邮件.这里大致记录一下其实现. 首先,需要在项目中导入两个包,一个是mailapi-XX.jar,一个是smtp-xx.jar.其中xx代表版本号.倘若使用maven更简单了,直接添加: <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>