私は Indy TIdHTTPコンポーネントを使用しており、次の関数を使用して sendgrid API 経由で電子メールを送信できます。sendgrid api のドキュメントは、ここにあります。
今、私は添付ファイルを含めることを任されています。API ドキュメントには、次のように記載されています。ファイルの内容は、マルチパート HTTP POST の一部である必要があります。
TIdMultipartFormDataStreamを含めるように関数を変更しようとしましたが、成功しませんでした。
添付ファイルをサポートするには、コードをどのように変更すればよいですか?
procedure SendGridEmailProc;
var
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;
mString: string;
mParams: TStringList;
i: Integer;
begin
try
mParams := TStringList.Create;
IdHTTP1 := TIdHTTP.create(nil);
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvSSLv3;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
with IdHTTP1 do begin
IOHandler := IdSSLIOHandlerSocket1;
end;
mParams.Add('api_user=xxxxx');
mParams.Add('api_key=xxxxx');
mParams.Add('to=xxxxxx');
mParams.Add('from=xxxxx');
mParams.Add('subject=test:'+datetimetostr(now));
mParams.Add('text=this is a test');
IdHTTP1.Post('https://sendgrid.com/api/mail.send.xml',mParams);
finally
mParams.Free;
idhttp1.free;
IdSSLIOHandlerSocket1.Free;
end;
end;