Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mimessage can';不要使用内部类_Java_Jakarta Mail - Fatal编程技术网

Java mimessage can';不要使用内部类

Java mimessage can';不要使用内部类,java,jakarta-mail,Java,Jakarta Mail,我们正在尝试运行一些标准Java代码,通过Javamail从第三方应用程序发送消息,我们遇到的问题是应用程序中存在一个bug,这意味着它无法使用内部类 在任何人要求之前,请不要要求修复应用程序,因为它不在我们的控制范围内。拥有该应用程序的公司建议其他人通过创建一个单独的类来解决问题,而不是在setRecipients中使用内部类RecipientType 我们试图让它正常工作,为RecipientType创建了一个新类,尽管我们在引用它时遇到了问题,因为它不是setRecipients中的方法

我们正在尝试运行一些标准Java代码,通过Javamail从第三方应用程序发送消息,我们遇到的问题是应用程序中存在一个bug,这意味着它无法使用内部类

在任何人要求之前,请不要要求修复应用程序,因为它不在我们的控制范围内。拥有该应用程序的公司建议其他人通过创建一个单独的类来解决问题,而不是在
setRecipients
中使用内部类
RecipientType

我们试图让它正常工作,为
RecipientType
创建了一个新类,尽管我们在引用它时遇到了问题,因为它不是
setRecipients
中的方法

如果有人知道如何避免在
MimeMessage
中使用内部类,我将不胜感激?我们有没有办法硬编码

其他信息:

这就是我们在应用程序中调用的内容

//新的MIME消息,版本1.0:
javax.mail.Message Message=newjavax.mail.internet.mimessage(会话);
message.setHeader(“MIME版本”、“1.0”);
message.setFrom(newjavax.mail.internet.InternetAddress(fromEmailAddress,fromEmailPersonal));
message.setRecipients(javax.mail.message.RecipientType.TO、javax.mail.internet.InternetAddress.parse(recipientEmailAddress));
message.setSubject(emailSubject);
message.setText(emailBody);
javax.mail.Transport.send(message);
这是Message.java中失败的部分

/**
*此内部类定义允许的收件人类型
*消息类。当前定义的类型为:,
*抄送和密件抄送。
*
*注意,这个类只有一个受保护的构造函数,因此
*将新收件人类型限制为此类或子类。
*这有效地实现了允许收件人的枚举
*类型。
*
*下面的代码示例演示如何使用此类获取
*邮件中的“收件人”。
* 
这是我们试图实现的自定义类,用来代替内部类RecipientType

import javax.mail.*;
导入javax.activation.*;
导入java.lang.*;
导入java.io.*;
导入java.util.*;
导入java.text.ParseException;
公共类RecipientType实现可序列化{
/**
*“收件人”(主要)收件人。
*/
公共静态最终接收方类型TO=新接收方类型(“TO”);
/**
*“抄送”(复写)收件人。
*/
公共静态最终接收方类型CC=新接收方类型(“CC”);
/**
*“密件抄送”收件人。
*/
公共静态最终接收方类型BCC=新接收方类型(“BCC”);
/**
*收件人的类型,通常是相应收件人的名称
*互联网标准头。
*
*@serial
*/
保护字符串类型;
私有静态最终长serialVersionUID=-7479791750606340008L;
/**
*子类使用的构造函数。
*
*@param type收件人类型
*/
受保护的RecipientType(字符串类型){
this.type=type;
}
/**
*当反序列化RecipientType时,我们需要确保
*仅返回定义的已知静态最终实例中的一个
*在这个类中。子类必须实现自己的
*
readResolve
检查其已知 *在调用此超级方法之前。 * *@返回RecipientType对象实例 *@exception对象流错误的ObjectStreamException */ 受保护对象readResolve()引发ObjectStreamException{ if(type.equals(“To”)) 返回; else if(类型等于(“Cc”)) 返回CC; else if(类型等于(“密件抄送”)) 返回密件抄送; 其他的 抛出新的InvalidObject异常( 尝试解析未知的RecipientType:+类型); } @凌驾 公共字符串toString(){ 返回类型; } }
这就是我们尝试实现自定义类的方式

我们得到以下错误:
无法解析表达式;未定义的方法:addRecipient for class:javax.mal.Message(第29行,第2列)

不清楚您到底想做什么。您能否向我们展示当前失败的内部类的代码(也可能向我们展示它是如何失败的,比如异常消息)。理想情况下,你的替代方法是什么样的,你被哪一部分困住了。基本上:我们不能在没有看到代码的情况下修复代码。绝对的胡乱猜测:静态的内部类,当它们实现可序列化时,外部类应该是可序列化的,序列化将花费太多时间。
message.setRecipients(RecipientType.TO, 
javax.mail.internet.InternetAddress.parse(  recipientEmailAddress ));