我想使用SMTP服务器和Outlook模板作为邮件发送电子邮件。
MailMessage
我正在尝试从模板创建邮件项并将其强制转换为public async Task<string> AdminGetState(ActorId actorId, string interfaceName){
//Find the type information for "interfaceName". (Assuming it's in the executing assembly)
var interfaceType = Assembly.GetExecutingAssembly().GetType(interfaceName);
//Use reflection to get the Create<> method, and generify it with this type
var createMethod = typeof(ActorProxy).GetMethod(nameof(ActorProxy.Create)).MakeGenericMethod(interfaceType);
//Invoke the dynamically reflected method, passing null as the first argument because it's static
object proxy = createMethod.Invoke(null,new object[] { actorId });
//As per your comments, find the "AdminGetStateJson" method here. You're REALLY trusting that it exists at this point.
var adminGetStateMethod = interfaceType.GetMethod("AdminGetStateJson");
Task<string> stateTask = (Task<string>)adminGetStateMethod.Invoke(proxy, null);
var state = await stateTask;
return JsonConvert.SerializeObject(state);
}
,以便我可以使用SMTP服务器发送电子邮件。但是,我收到以下错误。
无法将类型为“System .__ ComObject”的COM对象强制转换为类类型“System.Net.Mail.MailMessage”。
表示COM组件的类型实例无法强制转换为不代表COM组件的类型;但是只要底层的COM组件支持对接口的IID的QueryInterface调用,它们就可以转换为接口。
答案 0 :(得分:0)
Outlook.MailItem
显然对System.Net.Mail.MailMessage
对象一无所知。
您有责任将Outlook邮件转换为MIME邮件和/或在发送之前显式填充所有MailMessage属性。
答案 1 :(得分:0)
BCL的MailMessage
与Outlook MailItem
之间没有直接转换。您可以通过设置SendUsingAccount属性从Outlook中的其他帐户发送MailItem,该属性允许设置一个Account对象,该对象表示将在其下发送MailItem的帐户。
您可能会发现How To: Create and send an Outlook message programmatically文章很有帮助。