使用Delphi 2010,我正在尝试发送电子邮件,其中电子邮件的BODY需要是多行的。我不能让多线部分工作。我尝试插入#13,#10和'%0d'。它要么忽略并将所有内容打印为一行,要么我得到一个外部异常。
这是我的源代码。
strEmail := 'address@domain.com';
strSubject := 'Update Request: ';
strBody := 'Line1 ' +#13 + 'Line 2';
Param := 'mailto:' + strEmail + '?subject=' + strSubject + '&Body=' + strBody;
Shellexecute(Main.Handle, 'open', PChar(Param), nil, nil, SW_SHOWNORMAL);
如何在电子邮件正文中的不同行上获取Line1和Line2?您可以假设唯一的电子邮件客户端将是Outlook。 (可以使用不同的版本。)
谢谢,
GS
答案 0 :(得分:3)
根据mailto URL方案RFC 2368
,您必须使用%0D%0A
进行换行。有一个关于它的说明(删除双引号):
另请注意,必须对邮件正文中的换行符进行编码 %0D%0A。
答案 1 :(得分:1)
正如TLama所指出的,RFC需要回车和换行来断开电子邮件中的行。
将第三行修改为:
strBody := 'Line1 ' + #13#10 + 'Line 2';
任何时候我正在开发一个程序,它不仅可以轻松使用嵌入式回车和换行,还可以声明一个常量:
const
CRFL = #13#10;
知道我应该在整个代码中使用常量而不是#13#10,这会减少我忘记某个部分或向后输入它们的可能性。
答案 2 :(得分:0)
添加
'Line1 ' + #13#10 + 'Line 2'
也对我有用。 Outlook可以解决问题,只需将www更改为即使是纯文本的链接。
感谢Eric。 配合Indy 9使用Delphi 7很好。