无法发送MAPI消息
问题描述:
我想使用扩展MAPI发送消息,但不断收到E_ACCESSDENIED错误。我正在使用调用cpp dll的C#类。我能够检查邮件和删除邮件,但不能发送。下面是我用它来创建消息的C#:无法发送MAPI消息
using (MAPIMessage message = new MAPIMessage())
{
if (message.Create(this))
{
message.SetSender(send.SenderName, send.SenderAddress);
message.SetSubject(send.Subject);
message.SetBody(send.Message);
message.AddRecipient(send.RecipientAddress);
// High: Add attachments
#if DEBUG
ConfirmMessageCreation(send, message);
#endif
Logger.Log("Message created...\nSending message...", Verbose.LogEverything);
result = message.Send();
}
else
Logger.Log("There was a problem creating the email.", Verbose.LogImportant);
}
发送邮件的实际CPP如下:
BOOL MessageSend(CMAPIMessage* pMessage)
{
return pMessage->Send();
}
...
BOOL CMAPIMessage::Send()
{
HRESULT result = Message()->SubmitMessage(0);
if(Message() && result==S_OK)
{
Close();
return TRUE;
}
return FALSE;
}
即使我正确记录并且可以检查或删除邮件,当调用Send()时,我会收到E_ACCESSDENIED错误。任何对这个问题的深入了解将不胜感激。
答
需要删除与发件人相关的属性。
你是否设置了与发件人相关的属性? –
刚才是什么。我设置了发件人姓名和电子邮件地址。 – Tim
如果您不添加任何与发件人相关的属性,它会工作吗?尝试保存该消息(调用SaveChanges而不是SubmitMessage),然后在OUtlookSpy中查看它(单击IMEssage)并单击SubmitMessage以单击它。如果这样做不起作用,请尝试删除与发件人相关的属性。是否所有收件人都解决(有PR_ENTRYID)? –