切换到office365后outlook新消息不起作用
Outlook new message does not work after switching to office365
我们的应用程序中有以下功能,可以在 Outlook 中打开一条新消息,以便用户可以通过 Outlook 发送电子邮件。
program SO_37131815;
{$APPTYPE CONSOLE}
uses
Classes, ActiveX, ComObj, Variants, SysUtils;
procedure OutlookMail(ToAddress, Subject: string);
var
OutlookProgram: OLEVariant;
MailItem: Variant;
begin
try
OutlookProgram := GetActiveOleObject('Outlook.Application');
except
OutlookProgram := CreateOleObject('Outlook.Application');
end;
MailItem := OutlookProgram.CreateItem(0);
if ToAddress = '' then begin
ToAddress := ' ';
end;
MailItem.Recipients.Add(ToAddress);
MailItem.Subject := Subject;
try
MailItem.Display(False); //.Display(Modal)
except
//don't worry...
end;
OutlookProgram := Unassigned;
end;
begin
CoInitialize(nil);
OutlookMail('', 'blah');
end.
自从几天前客户端切换到 Office365 以来,这多年来一直运行良好。
当从 outlook 创建新消息时它工作正常,当它从我们的应用程序创建时它无法发送消息。
在 Outlook 2010 中,错误消息是:
"Could not complete the operation. One or more parameter values are not valid."
在 outlook 2016 中,错误消息是:
"Sorry something went wrong. You may want to try again"。
我还注意到,当从我们的应用程序创建新消息时,它无法保存到草稿中,并且会引发相同的错误。
程序打开新邮件window但是当按下发送邮件时,Outlook 无法发送它。
我能做些什么来解决这个问题?在调用 Display 之前是否需要设置一些 属性?
更新:感谢 David 的坚持,我已经缩小了范围。当 ToAddress 参数为空(或 space)时,Outlook 会产生错误。
所以添加以下代码似乎可以解决问题。
if Trim(ToAddress) <> '' then begin
MailItem.Recipients.Add(ToAddress);
end;
有没有人有更好的主意?
当 ToAddress
参数为空时,您不应将 space(或空字符串)参数传递给 MailItem.Recipients.Add
方法。
所以解决办法就是避免以上情况:
if Trim(ToAddress) <> '' then
MailItem.Recipients.Add(ToAddress);
我们的应用程序中有以下功能,可以在 Outlook 中打开一条新消息,以便用户可以通过 Outlook 发送电子邮件。
program SO_37131815;
{$APPTYPE CONSOLE}
uses
Classes, ActiveX, ComObj, Variants, SysUtils;
procedure OutlookMail(ToAddress, Subject: string);
var
OutlookProgram: OLEVariant;
MailItem: Variant;
begin
try
OutlookProgram := GetActiveOleObject('Outlook.Application');
except
OutlookProgram := CreateOleObject('Outlook.Application');
end;
MailItem := OutlookProgram.CreateItem(0);
if ToAddress = '' then begin
ToAddress := ' ';
end;
MailItem.Recipients.Add(ToAddress);
MailItem.Subject := Subject;
try
MailItem.Display(False); //.Display(Modal)
except
//don't worry...
end;
OutlookProgram := Unassigned;
end;
begin
CoInitialize(nil);
OutlookMail('', 'blah');
end.
自从几天前客户端切换到 Office365 以来,这多年来一直运行良好。 当从 outlook 创建新消息时它工作正常,当它从我们的应用程序创建时它无法发送消息。
在 Outlook 2010 中,错误消息是: "Could not complete the operation. One or more parameter values are not valid."
在 outlook 2016 中,错误消息是:
"Sorry something went wrong. You may want to try again"。
我还注意到,当从我们的应用程序创建新消息时,它无法保存到草稿中,并且会引发相同的错误。
程序打开新邮件window但是当按下发送邮件时,Outlook 无法发送它。 我能做些什么来解决这个问题?在调用 Display 之前是否需要设置一些 属性?
更新:感谢 David 的坚持,我已经缩小了范围。当 ToAddress 参数为空(或 space)时,Outlook 会产生错误。 所以添加以下代码似乎可以解决问题。
if Trim(ToAddress) <> '' then begin
MailItem.Recipients.Add(ToAddress);
end;
有没有人有更好的主意?
当 ToAddress
参数为空时,您不应将 space(或空字符串)参数传递给 MailItem.Recipients.Add
方法。
所以解决办法就是避免以上情况:
if Trim(ToAddress) <> '' then
MailItem.Recipients.Add(ToAddress);