java入门-发送邮件

一、下载jar包并导入项目中

使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。

 二、示例

1、发送简单的邮件

package com.zhouzy.base.t10;

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;

import org.junit.Test;

public class MailTest {
	
	@Test
	public void sendMail(){
		Properties props = new Properties();
		// 开启debug调试
		props.setProperty("mail.debug", "true");
		// 发送服务器需要身份验证
		props.setProperty("mail.smtp.auth", "true");
		// 设置邮件服务器主机名
		props.setProperty("mail.host", "smtp.163.com");
		// 发送邮件协议名称
		props.setProperty("mail.transport.protocol", "smtp");
		 
		Session session = Session.getInstance(props);
		 
		try {
			//邮件内容部分
			Message msg = new MimeMessage(session);
			msg.setSubject("邮件主体测试");
			StringBuilder builder = new StringBuilder();
			builder.append("欢迎大家来学习java入门课程,地址:https://blog.csdn.net/wwwzhouzy/category_11249888.html");
			builder.append("\n");
			builder.append("欢迎关注我,后续会有更多精彩分享!" );
			msg.setText(builder.toString());
			//邮件发送者
			msg.setFrom(new InternetAddress("test@163.com"));
			 
			//发送邮件
			Transport transport = session.getTransport();
			transport.connect("smtp.163.com", "你的邮箱", "邮箱发送授权码");
			 
			transport.sendMessage(msg, new Address[]{ new InternetAddress("接收者邮箱1","接收者邮箱2") });
			transport.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

结果:

Transport transport设置你的服务器邮箱地址和邮箱授权码,登录163邮箱,开启服务

开启之后会给你一个授权码,保存下来! 

2、发送附件(支持html)

package com.zhouzy.base.t10;

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.junit.Test;

public class MailTest {
	
	@Test
	public void sendMail(){
		Properties props = new Properties();
		// 开启debug调试
		props.setProperty("mail.debug", "true");
		// 发送服务器需要身份验证
		props.setProperty("mail.smtp.auth", "true");
		// 设置邮件服务器主机名
		props.setProperty("mail.host", "smtp.163.com");
		// 发送邮件协议名称
		props.setProperty("mail.transport.protocol", "smtp");
		 
		Session session = Session.getInstance(props);
		 
		try {
			//邮件内容部分
			Message msg = new MimeMessage(session);
			msg.setSubject("邮件主体测试");
			StringBuilder builder = new StringBuilder();
			//简单文本
			/*builder.append("欢迎大家来学习java入门课程,地址:https://blog.csdn.net/wwwzhouzy/category_11249888.html");
			builder.append("\n");
			builder.append("欢迎关注我,后续会有更多精彩分享!" );
			msg.setText(builder.toString());*/
			//支持html的邮件
			//String data = "<b>欢迎大家来学习java入门课程</b>,地址:<a href='https://blog.csdn.net/wwwzhouzy/category_11249888.html'>java入门</a>";
			//msg.setContent(data, "text/html;charset=utf8");
			
			
			//附件
			 //实例化一个bodypart用于封装内容 
			File file = new File("E://test.txt");
			Multipart multipart = new MimeMultipart(); 
	        BodyPart bodyPart = new MimeBodyPart(); 
	        bodyPart.setContent("<font color='red'>这个是带有附件的HTML内容</font>","text/html;charset=utf8"); 
	      //添加bodypart到multipart 
	        multipart.addBodyPart(bodyPart); 
	        //每一个部分实例化一个bodypart,故每个附件也需要实例化一个bodypart 
	        bodyPart = new MimeBodyPart(); 
	        //实例化DataSource(来自jaf),参数为文件的地址 
	        DataSource dataSource = new FileDataSource(file.getAbsolutePath()); 
	        //使用datasource实例化datahandler 
	        DataHandler dataHandler = new DataHandler(dataSource); 
	        bodyPart.setDataHandler(dataHandler); 
	        //设置附件标题,使用MimeUtility进行名字转码,否则接收到的是乱码 
	        bodyPart.setFileName(javax.mail.internet.MimeUtility.encodeText(file.getName())); 
	        multipart.addBodyPart(bodyPart); 
	        msg.setContent(multipart); 
	        
	        
	        //邮件发送者
			msg.setFrom(new InternetAddress("发送者邮箱地址"));
			msg.setRecipient(Message.RecipientType.TO, new InternetAddress("接收者邮箱1","接收者邮箱2") );
			//发送邮件
			Transport transport = session.getTransport();
			transport.connect("smtp.163.com", "发送服务器邮箱地址", "授权码");
			 
			transport.sendMessage(msg,msg.getAllRecipients());
			transport.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwzhouzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值