通过 javaMail发送邮件

通过 javaMail 发送邮件很简单,直接上代码:

package com.xixi.mail;

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

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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 javax.mail.internet.MimeUtility;

import org.apache.commons.lang3.StringUtils;

public class SendMail {
	
	public void sendMail(){
		
		try {
			
			Properties properties = System.getProperties();
			// 设置smtp服务器
			properties.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
			properties.put("mail.smtp.auth", "true");
			properties.setProperty("mail.transport.protocol", "smtp");
			Session session = Session.getInstance(properties);
			session.setDebug(true);

			MimeMessage message = new MimeMessage(session);
			InternetAddress sender = new InternetAddress("发送人邮箱");
			message.setFrom(sender);
			
			File file = new File("test.txt");
			
			//接收人
			String mailTo = "xxxx1.@qq.com,xxxx2.@qq.com";
			if (!StringUtils.isBlank(mailTo)) {
				String[] mailToList = mailTo.split(",");
				for (String mailToPerson : mailToList) {
					message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailToPerson));
				}
				//添加抄送人
				String mailCc = "xxxx3.@qq.com,xxxx4@qq.com";  
				if (StringUtils.isNotBlank(mailCc)){
					for (String mailCcPerson : mailCc.split(",")){
						message.addRecipient(Message.RecipientType.CC, new InternetAddress(mailCcPerson));
					}
				}
				message.setSubject("发送邮件主题");
				String content = "发送邮件正文";
				message.setContent(content, "text/html;charset=utf-8");
				
				//添加附件
				String fileNme = file.getName();
				MimeBodyPart mimeBodyPart = new MimeBodyPart();
				mimeBodyPart.setText("附件说明");
				Multipart multipart = new MimeMultipart();
				multipart.addBodyPart(mimeBodyPart);
				
				mimeBodyPart = new MimeBodyPart();
				DataSource dataSource = new FileDataSource(file);
				mimeBodyPart.setDataHandler(new DataHandler(dataSource));
				mimeBodyPart.setFileName(MimeUtility.encodeWord(fileNme));
				multipart.addBodyPart(mimeBodyPart);
				message.setContent(multipart);
				message.saveChanges();
				
				Transport transport = session.getTransport();
				transport.connect("smtp.exmail.qq.com", "发送人邮箱", "发送人邮箱密码");
				transport.sendMessage(message, message.getAllRecipients());
				transport.close();
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

邮件接收人和抄送人都支持多人,需要注意的是:

  1. 发件人的邮箱账户名和密码:有的邮箱设置了独立密码,还有的必须用授权码登录(qq邮箱)
  2. 发件人的SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com,本demo使用的是qq邮箱

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值