在mailto協議中
1:引數body的內容如果包含字符%,則shellexecute回傳值為2,不能打開outlook程式。
2:如果body內容中英文字符的""前面有字符#,則打開outlook之后會在Outlook里面提示命令列引數無效,若改成中文的“”或者把#刪掉就執行成功。
大佬們可以幫幫解決這兩個問題嗎。
uj5u.com熱心網友回復:
沒有人遇到這個問題嗎。或者提供解決思路也行啊。uj5u.com熱心網友回復:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Comobj,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function SendMailWithAttachments(Email, Subject : string; Body : Widestring ; Filename : string): boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.SendMailWithAttachments(Email, Subject : string; Body : Widestring ; Filename : string): boolean;
// 郵箱地址 主題 人名(注釋) 附件:檔案名
var outlook : variant;
item : variant;
begin
try
outlook := CreateOLEObject('outlook.application');
try
item := outlook.CreateItem(0);
item.Subject := Subject; // 主題
item.Body := Body; // 內容
if (FileName<>'') and (FileExists(FileName))
then item.Attachments.Add(FileName,1,1,FileName); // 附件
item.To := email;
item.Send;
finally
outlook.quit;
end;
except
result := false;
exit;
end;
result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Opendialog1 : TOpenDialog;
S1,S2,S3,FileName:string;
begin
S1:=Edit1.text;
S2:=Edit2.text;
S3:=Memo1.text;
FileName:=Edit3.text;
SendMailWithAttachments(S1,S2,S3,FileName);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit3.Text:= OpenDialog1.FileName;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
end.
作業系統中的OutLook 的引數你要設定好,就可以發了。代碼修改一下,就是你的...,...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37848.html
上一篇:Matlab多元擬合
