gpt4 book ai didi

java - 如何使用 JavaMail 发送非本地附件

转载 作者:行者123 更新时间:2023-12-01 15:48:32 24 4
gpt4 key购买 nike

我正在使用 jsp、servlet 和所有有趣的东西构建一个应用程序。现在,我有一个表单,它将表单中的所有信息传递到使用 JavaMail API 发送的 html 电子邮件。它有效,但我正在尝试发送附件,而我现在设置的方式不起作用...

<div class="section">Upload Files: <input id="fileUpload" type="file" /></div>

我获取此输入的值,将其传递到我的 servlet 并尝试发送电子邮件。问题是,当文件发送时,servlet 无法定位该文件,因为该标记为其提供了路径

C:\fakepath\file.doc

任何帮助都会很棒。

最佳答案

我明白了。 fakepath 是浏览器中的一项安全功能。但使用 tomcat 时,该文件实际上存储在 tomcat 文件夹内的临时文件夹中。所以我只需要使用 tomcat 库 commons.fileupload,然后使用它从文件中提取数据,而不管 fakepath 位置如何。

//Handle File Upload for the attachment
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());

try{
List fileItemsList = servletFileUpload.parseRequest(request);

//TODO: Take datafile input from the field and pass the file name so that we can view the file name

Iterator it = fileItemsList.iterator();
while (it.hasNext()){
FileItem fileItem = (FileItem)it.next();
if (fileItem.isFormField()){
/* The file item contains a simple name-value pair of a form field */
}
else{ //do what you want with the file}

然后,我将其传递到我的邮件实用程序,将文件名更改为正确的名称以获得正确的扩展名,并且它起作用了。当然,您必须将表单编码为多部分表单,并且还必须将 Mime 消息设为多部分。但毕竟它相当简单。

    MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(body, "text/html");



MimeBodyPart attachFilePart = new MimeBodyPart();
FileDataSource fds =
new FileDataSource(file);
attachFilePart.setDataHandler(new DataHandler(fds));
attachFilePart.setFileName(fileName);


Multipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(attachFilePart);

关于java - 如何使用 JavaMail 发送非本地附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com