【发布时间】:2012-12-07 08:05:02
【问题描述】:
我正在尝试使用扩展 MAPI 发送消息,但不断收到 E_ACCESSDENIED 错误。我正在使用调用 cpp dll 的 C# 类。我可以检查邮件和删除邮件,但不能发送。下面是我用来创建消息的 C#:
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 错误。对此问题的任何见解将不胜感激。
【问题讨论】:
-
您是否设置了任何与发件人相关的属性?
-
就是上面的内容。我设置了发件人姓名和电子邮件地址。
-
不添加任何发件人相关属性是否有效?尝试保存消息(调用 SaveChanges 而不是 SubmitMessage),然后在 OUTlookSpy 中查看它(单击 IMEssage)并通过单击 SubmitMessage 尝试提交。如果这不起作用,请尝试删除与发件人相关的属性。是否已解决所有收件人(具有 PR_ENTRYID)?
-
@Dimitry,我删除了发件人信息,它发送了。你是一个很棒的人!太感谢了。请设置一个答案,我会给你信用。再次感谢您!