JavaMail本地服务器发送邮件

本文介绍如何使用Java通过SMTP协议发送带有附件的电子邮件。通过激活和邮件两个jar包,结合具体配置示例,演示了从创建Session到发送邮件的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java利用自己的邮箱发送邮件需要一下两个jar包
activation.jar 下面为下载地址及方法
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#7017-jaf-1.1.1-oth-JPR
这里写图片描述
mail.jar下面为下载地址及方法
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR
这里写图片描述

package com.nuanshui.frms.exchange.demo.utils;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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 java.io.FileOutputStream;
import java.util.Properties;

public class EmailUtil {

        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {

            Properties prop = new Properties();
            prop.setProperty("mail.host", "发送服务器地址");
            prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "true");
            //使用JavaMail发送邮件的5个步骤
            //1、创建session
            Session session = Session.getInstance(prop);
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
            //3、连上邮件服务器
            ts.connect("发送服务器地址", "本地邮箱", "邮箱密码");
            //4、创建邮件
            Message message = createAttachMail(session);
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        }

        /**
         * @Method: createAttachMail
         * @Description: 创建一封带附件的邮件
         *
         * @param session
         * @return
         * @throws Exception
         */
        public static MimeMessage createAttachMail(Session session) throws Exception{
            MimeMessage message = new MimeMessage(session);

            //设置邮件的基本信息
            //发件人
            message.setFrom(new InternetAddress("发件人邮箱 "));
            //收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人邮箱"));
            //邮件标题
            message.setSubject("标题");

            //创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("邮件文字内容", "text/html;charset=UTF-8");

            //创建邮件附件
            MimeBodyPart attach = new MimeBodyPart();
            DataHandler dh = new DataHandler(new FileDataSource("D:/附件地址/附件名称.xlsx"));
            attach.setDataHandler(dh);
            attach.setFileName(dh.getName());  //

            //创建容器描述数据关系
            MimeMultipart mp = new MimeMultipart();
            mp.addBodyPart(text);
            mp.addBodyPart(attach);
            mp.setSubType("mixed");

            message.setContent(mp);
            message.saveChanges();
            //将创建的Email写入到E盘存储
            message.writeTo(new FileOutputStream("d:\\attachMail.eml"));
            //返回生成的邮件
            return message;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值