Content-Type: application/octet-stream; name="Frammøtebekreftelse.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Frammøtebekreftelse.pdf"
使用JavaMail1.6.2,我们有这样的体验:
Content-Type: application/octet-stream;
name*=windows-1252''Framm%F8tebekreftelse.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*=windows-1252''Framm%F8tebekreftelse.pdf
我认为这是好的,但是接收方在name*
-格式上有问题,这导致我们使用encodeParameters=false
。
使用JavaMail 1.6.2和encodeParameters=false
,我们有这样的体验:
Content-Type: application/octet-stream; name="Frammøtebekreftelse.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Frammøtebekreftelse.pdf"
这个代码很简单。下面是一个MCVE,它应该演示这个问题:
import java.io.IOException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class Mcve {
public static void main(String[] args) throws AddressException, MessagingException, IOException {
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "localhost");
props.setProperty("mail.mime.encodeparameters", "false");
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("email@example.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("email@example.com", false));
message.setSubject("Frammøtebekreftelse");
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart body = new MimeBodyPart();
body.setContent("Hello world", "text/plain");
multipart.addBodyPart(body);
MimeBodyPart attachment = new MimeBodyPart();
attachment.attachFile("Frammøtebekreftelse.pdf");
multipart.addBodyPart(attachment);
message.setContent(multipart);
Transport.send(message);
}
}
为了获得JavaMail1.6.2中头的旧外观,我需要添加以下两个系统属性:
props.setProperty("mail.mime.encodeparameters", "false");
props.setProperty("mail.mime.allowutf8", "false");
修补程序注释中对mail.mime.allowUTF8
的解释:
mail.mime.allowutf8:
If set to "true", UTF-8 strings are allowed in message headers,
e.g., in addresses. This should only be set if the mail server also
supports UTF-8.
不幸的是,我对此并不完全有信心,不会搞砸其他一些功能。根据我的基本检查,区别至少在于LineOutputStream
中的以下功能。
public void writeln(String s) throws IOException {
byte[] bytes = ASCIIUtility.getBytes(s);
out.write(bytes);
out.write(newline);
}
public void writeln(String s) throws IOException {
byte[] bytes;
if (allowutf8)
bytes = s.getBytes(StandardCharsets.UTF_8);
else
bytes = ASCIIUtility.getBytes(s);
out.write(bytes);
out.write(newline);
}
我使用下面的代码将pdf文件附加到邮件(JAVAMAIL)中。这个位置工作完美,并添加附件到我的邮件,但这邮件没有任何正文。 当我将下面的行添加到我的代码中时,它会删除附件并发送给我只包含文本的邮件。 请帮助我添加附件和测试体到我的邮件。
如何从内容类型为“多部分/备选”的邮件中下载附件;
我已经用UUID作为每个文件名的密钥将文件上传到s3 bucket,我要求将文件密钥作为存储的UUID,但当下载时,我需要将下载的文件名作为实际文件名,例如:foo.png aws S3-0E8221B9-9BF4-49D6-B0C0-D99E86F91F8E.png上存储的文件下载文件名应为:foo.bar 我尝试过设置Content-Disposition元数据,但在下载文件时仍然包含UUID
我至少读了5篇关于这方面的文章,但我似乎不明白。我有一个xml文件,它已经在浏览器的内存中,我正试图从我的数据库中更新一个文档,我已经有了该文档的文档ID。做这件事最好的方法是什么?jquery.couch.js中是否有对此的支持,因为我似乎找不到任何支持。 为了我的理智起见,我附上了一些带有硬编码值的代码: 我得到一个DOM18错误...但我使用的是一个公共服务器。思想?
我试图通过javamail和imap从我的电子邮件下载所有新的电子邮件附件。这一切都很好,但有些附件在PDF中被解码为BASE64,这是我的声明 如何获取此附件并将其下载到硬盘? 到目前为止已经尝试过了,第一个IF语句使用Base64解码捕获附件。 如果有一种简单易行的方法可以将附件下载到我的磁盘,也可以使用NodeJS。尝试过node-imap,但我在那里遇到了同样的错误。
最近我在通过oracle-javamail从我的电子邮件下载CSV时遇到了一个问题。我发现第一个工作正常(来自大型机服务器),但是第二个csv附件似乎是“应用程序/vnd.ms-excel”,当它显然是一个. csv文件时,就像另一个下载完全正常的文件一样。 我在这两个问题上使用了相同的代码,但找不到有关此问题的任何信息。 如果我把那封电子邮件发给自己,我可以神奇地下载附件而没有任何问题。任何帮助