delphi - 如何在 Delphi 中将 TMemo 用于电子邮件正文
问题描述
我有一个 TMemo 对象,其中包含大约 30 行(一些文本,一些空白行)的文本,代表我希望应用程序发送的电子邮件的消息正文。在下面的代码中,我将 TMemo 对象中的文本传递给IdMessage1.Body.Text
(Indy 10),但生成的电子邮件正文似乎只是一个连续的换行。我想查看包含一些空白行的间距。如果我从 TMemo 的 Lines 参数中复制内容并将其粘贴到文本编辑器中,我可以在行尾看到 CR 和 LF。
CR 和 LF 在此翻译中是否被剥离,我是否应该为此使用不同的组件而不是 TMemo,或者我是否将 TMemo 中的行IdMessage1.Body.Text
错误地传递给了?
IdMessage1.Body.Text := EmailBodyMemo.Text;
IdMessage1.ContentType := 'text/html';
解决方案
该TMemo.Text
属性将整个内容作为单个内容返回,string
没有在每行之间插入任何“软”(自动换行)换行符,只有“硬”换行符(显式CR
/LF
字符)。
改用这个:
IdMessage1.Body.Text := EmailBodyMemo.Lines.Text;
Lines.Text
返回 a string
,每行由Lines.LineBreak
(CRLF
默认情况下在 Windows 上) 分隔。
或者更好的是,改用这个:
IdMessage1.Body := EmailBodyMemo.Lines;
这与这样做相同:
IdMessage1.Body.Assign(EmailBodyMemo.Lines);
推荐阅读
- python - _tkinter.TclError: invalid command name ".36763856" 是什么意思?
- java - 如果用户使用 Google/Facebook 登录,我可以允许用户在注册时创建自定义用户名吗?
- xml - 任何字形图标都可以只是一条路径吗?
- javascript - 在单元测试中断言流类型错误
- php - 使用php将变量写入xml文件
- react-native - React Native - 单击文本时如何使用 ref 将焦点设置为输入
- javascript - 给定一个值为数组的对象,返回对 [key, array.length] 的最有效方法是什么?
- php - PHP 邮件在邮件中显示密件抄送地址
- arduino-uno - Arduino mills() 溢出
- java - 字符串如何相互比较?