缺陷:
新建邮件保存到草稿时,默认会保存到内部邮箱的草稿
解决方法:
1、业务模型\协同系统\个人事务\邮件库
procedure TCustomMailEditor.Save(Sender: TObject; AStream: TStream;
const APrepareSend: Boolean; var Saved: Boolean);
var
I,j: Integer;
lMailID, lNewMailID, lAccount: string;
lMailPath: string;
lStream: TStream;
lQuery: TQuery;
begin
I := FOpenedMails.IndexOfObject(Sender);
lMailID := FOpenedMails[I];
lMailPath := TMailEditForm(FOpenedMails.Objects[I]).MailPath;
if StringUtils.Pos('@',TMailEditForm(FOpenedMails.Objects[I]).edtSendTo.Text) <> 0 then
begin
for j := 0 to TMailEditForm(FOpenedMails.Objects[I]).pmAccountNames.Items.Count - 1 do
if TMailEditForm(FOpenedMails.Objects[I]).pmAccountNames.Items[j].Checked then
lAccount := TMailEditForm(FOpenedMails.Objects[I]).pmAccountNames.Items[j].Caption;
if lAccount <> '' then
begin
lQuery := TQuery.Create(nil);
lQuery.ConnectionString := TRTLConsts.CollaborationDatabaseConnectionString;
try
lQuery.CommandText := 'SELECT * FROM TMAILPATH WHERE FDISPLAYNAME = ''草稿'' '
+ ' AND FPARENTGUID = '''+ SysUtils.UpperCase(lAccount) +''' '
+ ' AND FOWNERGUID = ''' + SysUtils.UpperCase(MailSystem.GetOperUser) + ''' ';
lQuery.Open;
lMailPath := lQuery.FieldByName('FGUID').AsString;
finally
lQuery.Free;
end;
end;
end;
lStream := MailStream(lMailID);
lStream.Size := 0;
lStream.CopyFrom(AStream, 0);
if Assigned(OnSave) then
begin
lNewMailID := lMailID;
OnSave(Self, lNewMailID, lMailPath, lStream, APrepareSend, Saved);
if not SysUtils.SameText(lMailPath, TMailEditForm(FOpenedMails.Objects[I]).MailPath) then
TMailEditForm(FOpenedMails.Objects[I]).MailPath := lMailPath;
if not SysUtils.SameText(lNewMailID, lMailID) then
begin
FOpenedMails[I] := lNewMailID;
TMailEditForm(FOpenedMails.Objects[I]).MailPath := lMailPath;
AddMail(lNewMailID, AStream, True, False);
end;
end;
end;
2、业务模型\协同系统\个人事务\邮件库\邮件
procedure TMailCenterForm.SaveMail(Sender: TObject;
var MailGUID, MailPath: string; AStream: TStream;
const APrepareSend: Boolean; var Saved: Boolean);
......
if N = 0 then
begin
lNewMail := True;
//lMailPath := cGUID_Draft; //注释掉这句代码,因为在邮件库中TCustomMailEditor.Save事件中已经给他赋值
end
...... |