javax.mail.internet.ParseException:在Content-Type字符串中,期望’/’,得到:
我想使用JSF实现附加文件的邮件。 我试过这段代码:
private Part file; private String sendFromGMail(String from, String pass, String[] to, String subject, String body) { String status; Properties props = System.getProperties(); String host = "smtp.gmail.com"; props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); MimeMessage message = new MimeMessage(session); try { message.setFrom(new InternetAddress(from)); InternetAddress[] toAddress = new InternetAddress[to.length]; // To get the array of addresses for (int i = 0; i < to.length; i++) { toAddress[i] = new InternetAddress(to[i]); } for (int i = 0; i < toAddress.length; i++) { message.addRecipient(Message.RecipientType.TO, toAddress[i]); } message.setSubject(subject); message.setText(body); MimeBodyPart messageBodyPart = new MimeBodyPart(); Multipart multipart = new MimeMultipart(); messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(new DataHandler(file, file.getName())); messageBodyPart.setFileName(file.getName()); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (AddressException ae) { ae.printStackTrace(); return status = "Cannot send Message!"; } catch (MessagingException me) { me.printStackTrace(); return status = "Cannot send Message!"; } return status = "Message is send!"; } //....................... public Part getFile() { return file; } public void setFile(Part file) { this.file = file; } public void upload() { if (file != null) { try (InputStream inputStream = file.getInputStream(); FileOutputStream outputStream = new FileOutputStream("D:" + File.separator + "files" + File.separator + file.getSubmittedFileName())) { int bytesRead = 0; final byte[] chunck = new byte[1024]; while ((bytesRead = inputStream.read(chunck)) != -1) { outputStream.write(chunck, 0, bytesRead); } FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Upload successfully ended!")); } catch (IOException e) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Upload failed!")); } } }
但是在Tomcat日志文件中我收到此错误:
javax.mail.internet.ParseException: In Content-Type string
有这个问题的解决方案吗?
在我的情况下,我想使用h:inputFile
上传文件并将其作为电子邮件附件发送。 但我得到错误。
我不是已经在其他地方回答了这个问题吗?
将Part.getInputStream()与ByteArrayDataSource一起使用:
ByteArrayDataSource ds = new ByteArrayDataSource(file.getInputStream(), file.getContentType()); messageBodyPart.setDataHandler(new DataHandler(ds));