似乎javax.activation
在Java 9中不推荐使用package .Oracle迁移指南建议--add-modules java.activation
在JVM启动期间使用选项.
但是,我想避免这种情况并替换javax.activation
package的类,因为它已被弃用,并将在以后的java版本中删除.我想,应该有某种替代方案javax.activation
.如果有可用的话,它是什么?
我需要一个代码snippt转换DataHandler
为byte[]
.
此数据处理程序包含Image
.
是否可以javax.mail
使用"现有" InputStream
发送电子邮件附件内容的电子邮件?
目前我正在构建如下电子邮件:
final MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Subject line");
final Multipart multipartContent = new MimeMultipart();
final MimeBodyPart textPart = new MimeBodyPart();
textPart.setText("Message body");
multipartContent.addBodyPart(textPart);
final MimeBodyPart attachmentPart = new MimeBodyPart();
final DataSource source = new InputStreamDataSource("text/plain", "test.txt", new ByteArrayInputStream("CONTENT INPUT STREAM".getBytes()));
attachmentPart.setDataHandler(new DataHandler(source));
attachmentPart.setFileName("text.txt");
multipartContent.addBodyPart(attachmentPart);
message.setContent(multipartContent);
Run Code Online (Sandbox Code Playgroud)
InputStreamDataSource
实施如下:
public class InputStreamDataSource implements DataSource
{
private final String contentType;
private final String name;
private final InputStream inputStream;
public InputStreamDataSource(String contentType, String …
Run Code Online (Sandbox Code Playgroud) 我曾经使用 javamail 和 Java 8 发送电子邮件。
现在我升级到 Java 12,我得到了java.lang.NoClassDefFoundError: javax/activation/DataHandler
.
我添加了javax.activation-api-1.2.0.jar
,现在我明白了java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport
。
这是因为javax.activation-api-1.2.0.jar
没有com.sun...
以前版本的软件包。
我应该在我的项目中放置哪些 jar 才能使用 java 12 正确发送和发送电子邮件?哪里可以找到它们?
有很多令人困惑的来源,例如:
https://repo1.maven.org/maven2/javax/activation/javax.activation-api/1.2.0/
我的代码是:
// File Name SendEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendEmail
{
public static void main(String [] args)
{
// Recipient's email ID needs to be mentioned.
String to = "toEmail@gmail.com";
// Sender's email ID needs to be mentioned
String from = "fromEmail@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object. …
Run Code Online (Sandbox Code Playgroud)