Java发送邮件,本地不生成文件,用流的方式添加txt附件,

  • 最近遇到个小问题,要把前台传过来的字符串包装成txt格式并作为邮件的附件发送到指定邮箱。平时的解决思路是把字符串写入到本地文件,再读取文件作为邮件附件发送,但是发现文件没有必要在本地进行存储,最终采用流的方式附件上传成功。
public static boolean sendErrorLog(String emailBody,String fileName,String errorComment) throws Exception{

		 String errorLogForm = emailBody.replaceAll("\n","<br>").replaceAll("\t","&nbsp;");
         String Subject = "ErrorLog";
		 String from = RegistryHelper.getFromRegistry("EmailFrom");
		 String targetAddress = RegistryHelper.getFromRegistry("SendErrorLogAddress");
		 String commentForm = "<b>COMMENT:</b> "+errorComment+"<br /><br /><br />";
		//连接邮件服务器参数配置
		 Properties props = new Properties();
		 //host地址
		 String host = RegistryHelper.getSMTPServerName();
		 //SMTP地址
		 props.setProperty("mail.smtp.host", host);
		 //环境信息的 Session 对象
		 Session session = Session.getInstance(props);
		 try{
			//创建默认的 MimeMessage 对象
			 MimeMessage msg = new MimeMessage(session);
			 //Set From: 头部头字段
			 msg.setFrom(new InternetAddress(from));
			 //Set To: 头部头字段
			 msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(targetAddress));
			 // Set Subject: 主题文字
			 msg.setSubject(Subject);

			 //errorLog部分
			 MimeBodyPart context = new MimeBodyPart();
			 context.setContent(commentForm + errorLogForm,"text/html;charset=UTF-8");

			 //文件部分
			 MimeBodyPart attachment = new MimeBodyPart();
			 ByteArrayDataSource rawData = new ByteArrayDataSource(emailBody.getBytes(), "text/txt");
			 DataHandler dh = new DataHandler(rawData);
			 attachment.setDataHandler(dh);
			 attachment.setFileName(fileName);

			//混合邮件不同部分
			 MimeMultipart mm = new MimeMultipart();
			 mm.addBodyPart(context);
			 mm.addBodyPart(attachment);
			 mm.setSubType("mixed");

			 msg.setContent(mm);
			 msg.setSentDate(new Date());
			 Transport.send(msg);
			 log.info(Constants.Trace_in_the_log);
			 log.info(" error log sent successfully...");
			 return true;
			}catch (Exception ex){
			 log.error(Constants.Trace_in_the_log);
			 log.error("error log sent failed...");
			 log.error( ex.getMessage(  ), ex );
			 return false;
		 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值