Tag: javamail

无法发送邮件 – javax.net.ssl.SSLException:无法识别的SSL消息,明文连接?

我们使用Spring JavaMailSenderImpl发送Mail。 以下是配置 ${mail.transport.protocol} ${mail.smtp.auth} ${mail.smtp.starttls.enable} false true 属性文件: – host=XXXX.XXXX.XX port=25 mail.username=xxxxxxxx mail.password=xxxxxxx mail.transport.protocol=smtp mail.smtp.auth=true mail.smtp.starttls.enable=true 控制台日志 Exception in thread “taskExecutor-2” org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: XXXX.XXXX.XX, port: 25; nested exception is: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?. Failed messages: javax.mail.MessagingException: Could not connect […]

Javamail:在搜索邮件时可以使用FetchProfile而不是仅仅获取邮件吗?

根据http://java.sun.com/products/javamail/javadocs/javax/mail/FetchProfile.html , Message[] msgs = folder.getMessages(); FetchProfile fp = new FetchProfile(); fp.add(FetchProfile.Item.ENVELOPE); folder.fetch(msgs, fp); 但是,如果我想通过search()只获取读取消息,我没有办法指定FetchProfile(因为search()不接受这样的参数)。 Folder inbox = store.getFolder(“Inbox”); inbox.open(Folder.READ_WRITE); FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); Message messages[] = inbox.search(ft); //how to specify a FetchProfile here ?? 还有另一种方式吗? 非常感谢提前。

Java Mail超时和connectiontimeout处理

我正在使用JavaMail向SMTP服务器发送电子邮件请求。 我想在我的代码中设置“mail.smtp.connectiontimeout”和“mail.smtp.timeout”属性。 从编程方面来说,我希望在Java中达到超时和/或connectiontimeout操作时捕获它们并相应地处理事情。 在这个意义上的处理,我需要在下次再次重试同一封电子邮件。 如何在Java / JavaMail中处理此问题? 是否可以捕获并处理此超时操作? 编辑 此外,假设我已完成对SMTP服务器的管理访问,是否可以自行模拟/重现此超时操作?

如何使用JavaMail将文件附加到电子邮件

我需要使用JavaMail发送PDF文件。 PDF目前是一个字节[]。 如何将其导入DataSource? byte[] pdffile = …. messageBodyPart = new MimeBodyPart(); DataSource source = ??? messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart);

使用Javamail API和IMAP批量获取邮件正文

有没有办法通过使用Javamail API一次调用IMAP服务器来获取多个电子邮件的邮件正文? 我知道我可以使用Message.getContent()调用到达给定消息的主体,但最终会为每个消息调用imap服务器。 是否可以使用FetchProfile和Folder.fetch调用批量获取主体? 该文档暗示FetchProfile仅用于头数据。 我尝试了下面这个,但是没有做到这一点: FetchProfile fp = new FetchProfile(); fp.add(“rfc822.text”); inbox.fetch(messages, fp); 如果使用Javamail无法做到这一点,是由于Javamail API中的约束还是IMAP协议根本不支持这个?

使用附件文件读取邮件时缺少启动边界exception

我不知道为什么当从邮件服务器读取带有附件文件的邮件时,我收到以下exception: Exception in thread “main” javax.mail.MessagingException: Missing start boundary at javax.mail.internet.MimeMultipart.parsebm<MimeMultipart.java:872) at javax.mail.internet.MimeMultipart.parse<MimeMultipart.java:493) at javax.mail.internet.MimeMultipart.getCount<MimeMultipart.java:240) at GetParts.handleMultipart(GetParts.java:57) at GetParts.main(GetParts.java:42) 我用来读取这些消息的文件是: import java.io.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class GetParts { public static void main (String args[]) throws Exception { String host = args[0]; String username = args[1]; String password = args[2]; // Get […]

从javamail读取需要很长时间

我使用javamail使用IMAP协议从交易账户中读取邮件。 这些邮件是纯文本格式,其内容是XML。 几乎所有这些邮件的尺寸都很短(通常低于100Kb)。 但是,有时我必须处理大邮件(大约10Mb-15Mb)。 例如,昨天我收到了一封13Mb的电子邮件。 只需阅读它就花了50多分钟。 这是正常的吗? 有没有办法提高其性能? 代码是: Session sesion = Session.getInstance(System.getProperties()); Store store = sesion.getStore(“imap”); store.connect(host, user, passwd); Folder inbox = store.getFolder(“INBOX”); inbox.open(Folder.READ_WRITE); Message[] messages = inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); for (int i = 0 ; i< messages.length ; i++){ Object contents = messages[i].getContent(); // Here it takes 50 min on 13Mb mail […]

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

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

Javamail API – 如何将setFrom更改为您想要的任何内容?

如何将setFrom()方法更改为我想要的任何方法? 我可以通过我的gmail accoutn发送电子邮件并更改setFrom文本,但它会显示我的电子邮件username 。 我也试过使用我的雅虎帐户,但我收到了身份validation错误。 我想更改发件人地址。 代码如下: import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMailTLS { public static void main(String[] args) { final String username = “username@gmail.com”; final String password = “password”; Properties props = new Properties(); props.put(“mail.smtp.auth”, “true”); props.put(“mail.smtp.starttls.enable”, “true”); props.put(“mail.smtp.host”, “smtp.gmail.com”); props.put(“mail.smtp.port”, […]

如何中断IMAP的IDLE?

我正在使用连接到我的IMAP服务器的Javamail API。 使用javax.mail.Folder.idle() 方法,一切都运行良好。 当有新邮件进入时,我的监听器会被调用。但问题是永远是空闲块,我该如何打断它? 如何在不杀死Java程序的情况下实际停止监听? 我试过在idle’d线程上调用Thread.interrupt()。 什么都没发生。 我的想法已经不多了。