首页 > 解决方案 > 如何将换行符转换为 PChar 字符串

问题描述

我正在使用 ShellExecute 调用本地电子邮件客户端并在电子邮件客户端中填充邮件地址、主题和正文。这是我使用的代码...

  HdrBdy := 'mailto: support@positonstudio.co.uk' +
                '?Subject=Test Message Subject' +
                '&Body=Positron Studio ' + fmIDEAbout.lblIDEVersion.caption +' '+ fmIDEAbout.lblBuildTarget.caption + #13+
                 CompInfo.SystemManufacturer + ' Model No. ' + CompInfo.SystemProductName  +#13+
                 'Processor ' + CompInfo.ProcessorName + ' OS Version ' + OSInfo.Description  +#13+
                '----------------------------------------------------------------------------------';

  ShellExecute(Self.Handle,
               nil,
               PChar(HdrBdy),
               nil,
               nil,
               SW_NORMAL);

这可行,但正文文本在电子邮件客户端中显示为单行。如何在邮件客户端中插入多行。

标签: delphi

解决方案


你快到了,你需要有回车和换行。

所以不是+#13+你需要+#13+#10+或者你可以使用+#13#10+

我怀疑您还需要对设置为 Body 值的字符串进行百分比编码,以便在 URL 中正确传递它。

你可以用TURLEncoding.Encode()这个。

HdrBdy := 'mailto: support@positonstudio.co.uk' +
                '?Subject=Test Message Subject' +
                '&Body='+TURLEncoding.Encode('Positron Studio ' + fmIDEAbout.lblIDEVersion.caption +' '+ fmIDEAbout.lblBuildTarget.caption + #13#10+
                 CompInfo.SystemManufacturer + ' Model No. ' + CompInfo.SystemProductName  +#13#10+
                 'Processor ' + CompInfo.ProcessorName + ' OS Version ' + OSInfo.Description  +#13#10+
                '----------------------------------------------------------------------------------');

推荐阅读