Tag: mime message

为MimeMessage设置Content-Type?

我对mime消息的内容类型有一个困惑。 说我有一个mime消息。 这是一个多部分的消息,身体部位是这样的 Mime身体部分包含纯文本,html文本(像一些粗体字母) 第二个哑体部分包含附件, 第三个mime身体部位包含一个内嵌图像(从身体带cid引用) 当我创建正文部分时,我应该明确设置顶级mime消息的内容类型,然后是每个正文部分吗? 如果是,那么它们在上面的例子中应该是什么? 对于html建议使用multipart/alternative ,对附件建议使用multipart/mixed ,建议使用multipart/related进行内联。 我正在使用所有这些,那么什么应该是内容类型的完整消息和不同的身体部位? 仅仅是为了获取信息,我试图复制上面的场景,我没有为整体MimeMessage和身体部位设置内容类型。 但是我仍然得到了预期的东西,如纯文本,正文中的大胆字母,附件,右边詹姆斯的内嵌图像 詹姆斯如何在不设置内容类型的情况下解释哑剧信息和身体部位,以及如何以正确的方式展示它们? 代码供参考 MimeMessage msg = new MimeMessage(mailSession); MimeMultipart mpart = new MimeMultipart(); MimeBodyPart bp = new MimeBodyPart(); bp.setText(“plain text and html text likeTest”, CHARSET_UTF_8, MESSAGE_HTML_CONTENT_TYPE); // add message body mpart.addBodyPart(bp); // adding attachment MimeBodyPart bodyPart = new MimeBodyPart(); bodyPart.setFileName(“WordFile1”); file = […]

如何使用MimeMultipart的JavaMail覆盖默认的唯一边界字符串并创建自己的边界?

我有一个我使用的网络应用程序,它需要一个特定的边界字符串(“公司mime边界”)。 当我这样做时,我没有找到覆盖MimeMultipart默认行为的方法 Multipart mp = new MimeMultipart(); 一个唯一的边界字符串总是由构造函数创建,我想覆盖此行为以拥有自己的边界字符串,但由于我没有找到任何API,因此无法执行此操作。 即使我在内容类型中设置它,它也不起作用并且创建一个唯一的边界字符串,因为MimeMultipart正在创建一个默认的边界字符串。 mimeMsg.setHeader(“Content-Type”,”multipart/mixed;boundary=”company mime boundary”); 任何人都可以建议/帮助我。 如何覆盖此默认行为?

读取Email的文本文件转换为Javamail MimeMessage

我有一个电子邮件原始来源的文本文件(如果你单击“查看原始文件”,你会看到它直接从gmail复制)。 我想读取此文件并将其转换为MimeMessage。 如果您对原因感到好奇,我会设置JavaMaildir,并且需要使用电子邮件填充它的收件箱以进行测试。 我从来没有真正处理过阅读文件和所有这些,所以任何帮助都会非常感谢。

如何序列化Mimemessage实例?

我一直在尝试序列化MimeMessage实例,但正如我在网上看到的那样,这是不可能的。 我希望通过序列化MimeMessage实例来实现的是我想要散列该实例并将其发送到邮件本身。 到目前为止我编码的是: MimeMessage message = new MimeMessage(session); //…setting up content of MimeMessage ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(“object.ser”))); oos.writeObject(message); oos.close(); 它在GlassFish服务器上编译,但是当我尝试使用服务时出现运行时错误。 它说: exception java.io.NotSerializableException: javax.mail.internet.MimeMessage 我试着这样做; 然而它也没有用: Object obj = new Object(); obj = (Object)message; ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(“object.ser”))); oos.writeObject(obj); oos.close(); 有没有办法实现序列化MimeMessage实例或以其他方式绕过它?

如何阻止通过GMail显示为附件的电子邮件中的嵌入图像?

我发送带有嵌入图像的HTML电子邮件(作为附件),图像按照预期在GMail中显示。 但是,它们也会在电子邮件下显示为附件。 有谁知道如何避免这种情况,即我只想在电子邮件中使用它们而不是作为附件列出。 我使用过“Content-Disposition:inline”。 我正在使用Spring和JavaMail。 这是我的邮件最终结果。 谁能看到什么错了? Delivered-To: … … Subject: … MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=”—-=_Part_0_1248835444.1288246311187″ ——=_Part_0_1248835444.1288246311187 Content-Type: multipart/related; boundary=”—-=_Part_1_592250078.1288246311197″ ——=_Part_1_592250078.1288246311197 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline ——=_Part_1_592250078.1288246311197 Content-Type: image/x-png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-ID: iVBORw0KGgoAAAANSUhEUgAAAPAAAABQCAYAAAAnSfh8AAAACXBIWXMAAC4jAAAuIwF4pT92AAAA … Qcz8hzyUxqGHjkNbsY4Df5iBg6OIwafQHBxFjP8PAIwl43uhncLdAAAAAElFTkSuQmCC ——=_Part_1_592250078.1288246311197– ——=_Part_0_1248835444.1288246311187–

如何检查邮件地址是否存在?

我使用com.sun.mail.smtp.SMTPTransport通过Java发送电子邮件。 我成功发送了电子邮件,但如果我将邮件发送到无效的电子邮件地址,则SMTPTransport不会出现任何错误。 有没有办法检查给定的邮件地址是否存在? 我不是要将邮件地址检查为客户端 ,我需要检查为服务器端 。 我在很多论坛上发现了很多这样的问题,但我没有得到任何正确的解决方案。 我的代码是 – String email = “reciever@theirDomain.com”; Properties props = new Properties(); props.put(“mail.smtps.host”, “mail.myDomain.com”); props.put(“mail.smtps.auth”, “true”); Session session = Session.getInstance(props, null); MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(“Mail Demo “)); msg.setRecipients(Message.RecipientType.TO, email); msg.setSubject(“Mail Example”); msg.setSentDate(new Date(System.currentTimeMillis())); String txt = “Message Body”; msg.setText(txt); SMTPTransport st = (SMTPTransport)session.getTransport(“smtps”); st.connect(“mail.myDomain.com”,”my_email@myDomain.com”,”password”); st.sendMessage(msg, msg.getAllRecipients()); […]

MimeMessage.saveChanges真的很慢

由于包含m.saveChanges() ,以下测试大约需要5秒钟才能执行。 import org.junit.Before; import org.junit.Test; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.MimeMessage; import java.io.IOException; import java.util.Properties; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @Test public void test1() throws MessagingException, IOException { Session s = Session.getDefaultInstance(new Properties()); MimeMessage m = new MimeMessage(s); m.setContent(“Hello”, “text/html; charset=utf-8”); m.saveChanges(); assertEquals(m.getContent(), “Hello”); assertEquals(m.getContentType(), “text/html; charset=utf-8”); } 我也用mockito嘲笑了Session,但它没有帮助: Session […]