起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: vagrant

【结贴】邮件**

[复制链接]
发表于 2009-6-12 16:57:50 | 显示全部楼层
抱歉,楼主。我这边再跟开发确认一下。
回复 支持 反对

使用道具 举报

发表于 2009-6-16 13:18:08 | 显示全部楼层
上qq,我给你传资源。

邮件库.rar

1.34 MB, 下载次数: 32

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-22 11:56:57 | 显示全部楼层
问题已解决
回复 支持 反对

使用道具 举报

发表于 2009-8-4 15:09:01 | 显示全部楼层
缺陷:
新建邮件保存到草稿时,默认会保存到内部邮箱的草稿

解决方法:
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
   ......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 08:33 , Processed in 0.045554 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表