【Java】JavaWeb发送邮件(带附件)

本文详细介绍了如何使用JavaWeb通过SMTP协议发送带有附件的电子邮件。首先讲解了在126邮箱中设置SMTP授权码的过程,然后阐述了准备配置文件properties的注意事项,特别是属性名的使用。接着,通过加载配置文件创建Session对象,并创建Message对象来设置发件人、收件人和邮件主题。在Message中添加文字内容和附件后,创建Transport对象并处理可能的异常,最终成功发送邮件。

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

需要的jar:activation(激活).jar和mail.jar

0.设置发件邮箱的授权(以126为例)

点击POP3/SMTP服务后就有弹窗

之后得到一个自己设置的     授权码

1.准备配置文件properties

※注意:mail.host / mail.transport.protocol / mail.smtp.auth 不能修改其名字 位置可以更改 

               剩下的几项名字可以更改,仅作导入字符串作用

※注意:pwd(password)代表的是发件人邮箱的授权码 不是登录发件人邮箱时用的密码

※注意:uname是发件人邮箱的id 不用@后面的字符串

 

2.写Java程序

2.1.加载配置文件得到props对象

//email_template.properties是第一步在项目中创建的配置文件的名字
Properties props = new Properties();
			props.load(this.getClass().getClassLoader()
					.getResourceAsStream("email_template.properties"));


2.2.创建props对应Session对象

Session session = Session.getDefaultInstance(props);
			session.setDebug(true);		//设置调试模式


2.3.创建session对应MineMessage对象(用来设置发件人/收件人/主题)

MimeMessage message = new MimeMessage(session);
			message.setFrom(new InternetAddress(props.getProperty("from")));
			message.setRecipient(Message.RecipientType.TO, (new InternetAddress(form.getEmail())));
			message.setSubject(props.getProperty("subject"));

2.3.1设置message内容(文字+附件)

Multipart multipart = new MimeMultipart();	//创建内容块
			
    BodyPart contentPart = new MimeBodyPart();	//内容文字块
	
        contentPart.setContent("文字块内容","text/html;charset=utf-8");
			
	BodyPart attachmentPart = new MimeBodyPart();	//内容附件块
			
		File file = new File("附件路径");	
	    DataSource dataSource = new FileDataSource(file);
		attachmentPart.setDataHandler(new DataHandler(dataSource));
		//防止乱码或不显示中文
        attachmentPart.setFileName(MimeUtility.encodeWord(file.getName()));	

			
	multipart.addBodyPart(contentPart);
	multipart.addBodyPart(attachmentPart);
			
message.setContent(multipart);


2.4.创建session对应Transport对象

//uname对应发件邮箱名 不用@后面字符串
Transport ts = session.getTransport();
			ts.connect(props.getProperty("uname"), props.getProperty("pwd"));	

※这里调用Transport的connect方法时会有异常要处理


2.5.用transport发送

ts.sendMessage(message, message.getAllRecipients());

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值