vb.net使用smtp和outlook.CreateItemFromTemplate发送outlook电子邮件

时间:2016-06-29 20:39:18

标签: outlook smtp vb.net-2010

我想使用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调用,它们就可以转换为接口。

2 个答案:

答案 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文章很有帮助。