Java邮件发送的例子,网上一搜能搜一大把。很多好的例子是值得学习和借鉴的。前段时间研究了一些关于邮件的发送的功能,参考网上的一些资料,自己也试着做了一个邮件发送的小工具。现在将邮件发送的核心代码贴出来和大伙分享。

package com.test.mail;

import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

public class MailDemo {
	
	private static final String EMAILLOGIN = "邮箱地址";
	private static final String EMAILPASSWORD = "邮箱密码";
	private static final String EMAILSMTP = "smtp.qq.com";
	private static final String NICKNAME = "青年工作室";
	
	static Authenticator auth = new Authenticator() {
		 
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(EMAILLOGIN, EMAILPASSWORD);
        }
 
    };
 
    public static void main(String[] args) {
    	sendEmailQuickly();
    }
    
    public static void sendEmailQuickly(){
    	// 创建一个属性对象
    	Properties props = new Properties();
    	//指定SMTP服务器地址
        props.put("mail.smtp.host", EMAILSMTP);
        //指定是否需要SMTP验证
        props.put("mail.smtp.auth", "true");
        props.put("mail.from", EMAILLOGIN);
        // 创建会话,将Properties配置内容放入Session中
        Session session = Session.getInstance(props);
        try {
        	// 创建一个Message对象
            MimeMessage msg = new MimeMessage(session);
            // 设置邮件发件人(发送人昵称<发送人邮件地址>)
            msg.setFrom(new InternetAddress(MimeUtility.encodeText(NICKNAME)+"<"+EMAILLOGIN+">"));
            // 设置邮件发送时间
            msg.setSentDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2014-09-16 16:12:00"));
            // 设置邮件收件人
            msg.setRecipients(Message.RecipientType.TO, "收件人邮箱地址");
            // 设置邮件的主题
            msg.setSubject("JavaMail 测试邮件");
            // 设置邮件的内容(超文本形式)
            msg.setContent("Hello, world!<br/>这是一封测试的邮件。<br/>来自KerryPak<br/><span style='color:#ccc'>此信为系统邮件,请不要直接回复。</span>","text/html;charset=utf-8");
            //设置邮件内容(文本形式)
        	//  msg.setText("Hello, world!\n这是一封测试的邮件。\n此信为系统邮件,请不要直接回复。\n来自KerryPak");
            //指定邮件的优先级 1:紧急 3:普通  5:缓慢
            msg.setHeader("X-Priority", "3");
            //创建一个传输对象
            Transport trans=session.getTransport("smtp");//协议
            //连接SMTP服务器   
            trans.connect("smtp.qq.com",EMAILLOGIN, EMAILPASSWORD);//这里是发件人的邮箱用户名和密码(我的密码就先隐藏啦)
            trans.sendMessage(msg,msg.getAllRecipients());
            trans.close();
            
        } catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);
        } catch (ParseException e) {
        	e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
    }

}

当然咯,邮件的发送方法有很多,我写的这只是其中一种。 我写的这个多多少少和网上的有些出入,但是基本实现的方式大体上类同,只需要你在使用的时候稍稍的改造封装就可以了。

Java邮件发送依赖的工具Jar包是 javax.mail.jar ,没有这个包的朋友可以百度或者直接M我;如果有使用Maven的朋友们可以使用我贴出来的dependency。

<!-- 邮件服务支撑包 -->
<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.5.4</version>
</dependency>

 

 

标签: Java 邮件发送, 邮件发送, Java 邮件服务, Java发送邮件, Java邮件发送Demo

已有 3 条评论

  1. bateer

    从百度点进来的,支持一下

  2. 你这主题,浓浓的cnblog即视感,Java风格~

添加新评论