起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: 巧克力味

【结贴】邮件另存为的问题!**

[复制链接]
 楼主| 发表于 2008-9-25 16:49:37 | 显示全部楼层
哦,我先看看代码吧,然后再回贴!
回复 支持 反对

使用道具 举报

发表于 2008-9-25 17:13:39 | 显示全部楼层
楼主,你先在设计环境下,运行系统初始化模拟运行平台看看,并设置一下断点,看看传进去值的是否对?
如果设计环境可以,运行环境不行,你重新启动一下服务看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-25 17:46:57 | 显示全部楼层
发送人搞得了,不过日期不管怎么搞都是2008年1月9日 星期三 15:23,应该是什么样的日期格式呢?
回复 支持 反对

使用道具 举报

发表于 2008-9-25 18:11:33 | 显示全部楼层
日期的问题,需要再看看,请等待结果。
回复 支持 反对

使用道具 举报

发表于 2008-9-26 09:19:13 | 显示全部楼层
针对这个问题需要按下面的方式修改:
事件声明:
  procedure SaveToStream(AStream: TStream); overload;
    procedure SaveToStream(AStream: TStream; SaveToLocal: Boolean); overload;
事件实现:
procedure TMailEditForm.SaveToStream(AStream: TStream);
begin
  SaveToStream(AStream, False);
end;

procedure TMailEditForm.SaveToStream(AStream: TStream; SaveToLocal: Boolean);
var
  DateYear:   String;
  Month:         String;
  Date:           String;
begin
  if Pos('@', edtSendTo.Text) <> 0 then
  begin
    if edtFrom.text <> '' then
      msgMail.From := edtFrom.text
    else
      msgMail.From := DoGetMailFrom;
  end
  else
    msgMail.From := DoGetInternalMailFrom;
  msgMail.Subject := edtSubject.Text;
  if msgMail.Date = '' then
  begin
    DateYear   :=   FormatDateTime('dd-yyyy hh:mm:ss',SysUtils.Now);
    Month   :=   FormatDateTime('m',SysUtils.Now);
    case   StrToInt(Month) of
        1:   Month:='Jan';
        2:   Month:='Feb';
        3:   Month:='Mar';
        4:   Month:='Apr';
        5:   Month:='May';
        6:   Month:='Jun';
        7:   Month:='Jul';
        8:   Month:='Aug';
        9:   Month:='Sep';
        10:  Month:='Oct';
        11:  Month:='Nov';
        12:  Month:='Dec';
    end;
    if SaveToLocal then
      msgMail.Date :=Month+ '-'+DateYear
    else
      msgMail.Date := FormatDateTime('yyyy-mm-dd hh:mm:ss',SysUtils.Now);
  end;


  CheckName;
  msgMail.SendTo := edtSendTo.Text;
  msgMail.CC := edtCC.Text;
  msgMail.Bcc := edtBcc.Text;

  case msgMail.ContentFormatType of
    TContentFormatType.ftText : SaveText(AStream);
    TContentFormatType.ftHTML : SaveHTML(AStream);
  end;

  FModified := False;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 10:18:17 | 显示全部楼层

还是不行

还是不行,还是13楼的问题:

但是我用:  Dialogs.ShowMessage(msgMail.Date);  代码跳出信息是当前时间,如图, 但是保存的邮件还是:2008年1月9日 星期三 10:13,

这是什么原因?

信息.png

4.21 KB, 下载次数: 144

回复 支持 反对

使用道具 举报

发表于 2008-9-26 11:00:08 | 显示全部楼层
楼主,上面的做法都不对(格式上还是有问题)。你回滚这部分的代码吧。
按下面的代码作修改:
procedure TMailEditForm.SaveToStream(AStream: TStream);
var
  DateYear:   String;
  Month:         String;
  Date:           String;
begin
  if Pos('@', edtSendTo.Text) < 0 then
    msgMail.From := DoGetMailFrom
  else
    msgMail.From := DoGetInternalMailFrom;

  if edtFrom.text <> '' then
    msgMail.From := edtFrom.text;

  msgMail.Subject := edtSubject.Text;
  if msgMail.Date = '' then
  begin
    DateYear   :=   FormatDateTime('dd-yyyy hh:mm:ss',SysUtils.Now);
    Month   :=   FormatDateTime('m',SysUtils.Now);
    case   StrToInt(Month) of
        1:   Month:='Jan';
        2:   Month:='Feb';
        3:   Month:='Mar';
        4:   Month:='Apr';
        5:   Month:='May';
        6:   Month:='Jun';
        7:   Month:='Jul';
        8:   Month:='Aug';
        9:   Month:='Sep';
        10:  Month:='Oct';
        11:  Month:='Nov';
        12:  Month:='Dec';
    end;
    msgMail.Date := Month + '-' +DateYear;
  end;

  CheckName;
  msgMail.SendTo := edtSendTo.Text;
  msgMail.CC := edtCC.Text;
  msgMail.Bcc := edtBcc.Text;

  case msgMail.ContentFormatType of
    TContentFormatType.ftText : SaveText(AStream);
    TContentFormatType.ftHTML : SaveHTML(AStream);
  end;

  FModified := False;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 11:34:47 | 显示全部楼层
你能不能把日期可能的格式贴给我?
回复 支持 反对

使用道具 举报

发表于 2008-9-26 11:46:28 | 显示全部楼层
outlook的格式我们也是从网上找到的
区别就是月份不是用阿拉伯数字而是英文的简写。
上面的代码就是根据这样的日期格式做了一个转换。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 14:24:18 | 显示全部楼层
得了,就是你15楼做的那个日期格式,现在只还有一个问题了,怎么获取该邮件的接收时间?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 04:22 , Processed in 0.040722 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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