delphi - 如何将换行符转换为 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);
这可行,但正文文本在电子邮件客户端中显示为单行。如何在邮件客户端中插入多行。
解决方案
你快到了,你需要有回车和换行。
所以不是+#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+
'----------------------------------------------------------------------------------');
推荐阅读
- javascript - 尝试从 JSON 追加获取数据
- c# - C#中的石头、纸、剪刀
- java - 未解决的要求:导入包:com.google.common.base
- python-3.x - GetObject 操作:尝试使用 boto 读取 S3 存储桶中的文件时拒绝访问
- python - 没有线程的 Python 计时器
- amazon-web-services - 为什么我不应该将我的所有 DynamoDB 项目都放在同一个分区键值中?
- docker - 文件更改时,两个带有 Nodemon 的后端服务器不会在 docker 容器中重新加载
- ios - 更改 SegmentedControl 的索引时如何调用函数
- python - python中的mypy导入*
- python - Python:在写入之前截断 txt 文件