起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 229|回复: 14

【结贴】x3发送邮件内容可不可以转换

[复制链接]
发表于 2008-10-24 14:58:46 | 显示全部楼层 |阅读模式
unicode的编码方式接收到乱码,有没有办法把邮件内容由unicode转换成ascii编码格式?
回复

使用道具 举报

 楼主| 发表于 2008-10-24 15:08:35 | 显示全部楼层
能不能
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:09:16 | 显示全部楼层
楼主是怎么做的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 15:23:12 | 显示全部楼层
代码发送邮件;然后根据邮件内容决定流程是流转还是回退或者终止;
目前的问题是如果邮件是unicode的编码方式无法解析内容,因为汉字显示的乱码。我们像把unicode编码方式转换为ascii码,然后根据内容解析。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 15:25:56 | 显示全部楼层
我说的邮件内容是根据回复的邮件内容决定流转还是回退;
回复 支持 反对

使用道具 举报

发表于 2008-10-24 15:28:51 | 显示全部楼层
楼主,你是说从其他邮件服务器上收到的邮件,解析出来是乱码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 15:43:32 | 显示全部楼层
发邮件是代码发的,回复是用户用邮箱或者手机回复的。代码发送就是引用的邮件库:
procedure TMAILDETAIL.LoadFromStream(AStream: TStream);
var
  I: Integer;
  sl: TStrings;
  mi: TMenuItem;
  lIcon: TIcon;
  lWeb: TWebBrowser;
begin
  pClient.OnResize(nil);
  if AStream = nil then
    msgMail.Clear
  else
    msgMail.LoadFromStream(AStream);

  if msgMail.Body.Count = 0 then
    msgMail.Body.Text := '<html></html>';
  edtFrom.Text := msgMail.From;
  edtSubject.Text := msgMail.Subject;
  edtSendTo.Text := msgMail.SendTo;
  edtCC.Text := msgMail.CC;
  //SMP Add 20080822由于一个邮件体(html)中有Meta项这一项只有在WebBrowser第一次Create之后的第一次Navigate
  //之后调用Designmode的开关一次才能读出来否则就是乱码
  lWeb := TWebBrowser.Create(pClient.Owner);
  TWinControl(lWeb).Parent := pClient;
  lWeb.Align := TAlign.alClient;
  lWeb.OnDocumentComplete := WebBrowserDocumentComplete;
  lWeb.Navigate(EncodeURL(sMainHTML));
  lWeb.BringToFront;
  if Assigned(lWeb.Document) then
  begin
    (lWeb.Document as IHTMLDocument2).designMode := 'on';
    (lWeb.Document as IHTMLDocument2).designMode := 'off';
  end;
  if Assigned(WebBrowser) then
    WebBrowser.Free;
  WebBrowser := lWeb;
  popAttachs.Items.Clear;
  imgAttachs.Clear;
  sl := TStringList.Create;
  lIcon := TIcon.Create;
  try
    msgMail.GetAttachFileNames(sl);
    btnAttachs.Visible := sl.Count > 0;
    for I := 0 to sl.Count - 1 do
    begin
      mi := TMenuItem.Create(popAttachs);
      mi.Caption := sl[I];
      GetFileIcon(sl[I], lIcon);
      mi.ImageIndex := imgAttachs.AddIcon(lIcon);
      mi.Tag := MailExtCtrls.TObject2Integer(sl.Objects[I]);
      mi.OnClick := SaveAttach;
      popAttachs.Items.Add(mi);
    end;
  finally
    lIcon.Free;
    sl.Free;
  end;
end;

代码中
msgMail.Body.Text如果是unicode汉字显示的乱码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 15:55:05 | 显示全部楼层
是的,目的是把收到的邮件格式转化为ASCII吗格式的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-24 16:01:57 | 显示全部楼层
可不可以,不能的话回复一下,我们想其它的解决方法。
回复 支持 反对

使用道具 举报

发表于 2008-10-24 16:09:25 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-25 10:44 , Processed in 0.040360 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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