java实现邮件发送

本文介绍如何使用JavaMail API发送包含附件的电子邮件。通过设置SMTP服务器属性、身份验证信息及构建邮件内容,实现了发送纯文本或HTML格式的邮件,并支持添加附件。

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

需依赖第三方jar包

javamail项目源码←点击

这里下载


方法实现

	public boolean sendMail() {
		// 构造mail session
		Properties props = System.getProperties();
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.auth", "true");
		Session session = Session.getDefaultInstance(props,
				new Authenticator() {
					public PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(username, password);
					}
				});
		try {
			// 构造MimeMessage并设定基本的值,创建消息对象
			MimeMessage msg = new MimeMessage(session);
			// 设置消息内容
			msg.setFrom(new InternetAddress(from));
			//System.out.println(from);
			// 把邮件地址映射到Internet地址上
			InternetAddress[] address = { new InternetAddress(to) };
			/**
			 * setRecipient(Message.RecipientType type, Address
			 * address),用于设置邮件的接收者。<br>
			 * 有两个参数,第一个参数是接收者的类型,第二个参数是接收者。<br>
			 * 接收者类型可以是Message.RecipientType .TO,Message
			 * .RecipientType.CC和Message.RecipientType.BCC,TO表示主要接收人,CC表示抄送人
			 * ,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
			 */
			msg.setRecipients(Message.RecipientType.TO, address);
			
			if(cc!=null && !cc.equals("")) {
				cc = cc.replaceAll(";",",");
				InternetAddress[] caddress = new InternetAddress().parse(cc);
				msg.addRecipients(Message.RecipientType.CC, caddress);
			}
			// 设置邮件的标题
			//subject = transferChinese(subject);
			msg.setSubject(subject);
			// 构造Multipart
			Multipart mp = new MimeMultipart();

			// 向Multipart添加正文
			MimeBodyPart mbpContent = new MimeBodyPart();
			// 设置邮件内容(纯文本格式)
			// mbpContent.setText(content);
			// 设置邮件内容(HTML格式)
			mbpContent.setContent(content, "text/html;charset=utf-8");
			// 向MimeMessage添加(Multipart代表正文)
			mp.addBodyPart(mbpContent);
			if(filename!=""){
				//调用生成附件方法
				MimeBodyPart attachment01 = createAttachment(filename); 
				mp.addBodyPart(attachment01);
			}
		
			
			// 向Multipart添加MimeMessage
			msg.setContent(mp);
			// 设置邮件发送的时间。
			msg.setSentDate(new Date());
			// 发送邮件
			Transport.send(msg);
		} catch (Exception e) {
			logger.warn(e.getMessage());
			e.printStackTrace();
			return false;
		}
		return true;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值