Как сгенерировать multipart / form-data для вложения электронной почты, отправленного через API для массовой рассылки - PullRequest
0 голосов
/ 22 марта 2019

Я экспериментирую с отправкой писем через отправителя электронной почты через их API.

Код, который в данный момент работает для отправки простого электронного письма, таков (INetHttp1 имеет тип TINetHttp):

procedure TForm1.GenerateSendMailRequest;
var
  fullURL, s : string;
  Stream: TIdMultiPartFormDataStream;
begin
  try
    Stream.AddFile('attachfile','C:\Users\Admin\Documents\age breakdown plot.pdf','<multipart/alternative>');
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;

  fullURL := 'https://api.elasticemail.com/v2/email/send'
            +'?apikey=e123456-cacb-4456-112a-d145e7f55a47'
            +'&subject=test 3 from elastic mail'
            +'&from=myemail.co.uk'
            +'&To=recipient1@hotmail.com;recipient2@gmail.com'    
            +'&bodyText=this is the body of the mail';

  //?? how do I get the stream into the URL?

  try
    INetHttp1.Flags := [flSecure];
    INetHttp1.Verb := veGet;
    INetHttp1.Url := fullURL;
    INetHttp1.Open;
    INetHttp1.OpenRequest;
    INetHttp1.SendRequest;
    s := string(INetHttp1.ReadData);
  finally
    INetHttp1.Close;
    Stream.free
  end;

  ShowMessage(s) //show server reponse
end;

Чтобы включить вложение (мое будет PDF-файл), их документация API гласит:

Прикрепить файл как POST multipart / form-data file upload

В одном из примеров написано

Вам необходимо предоставить вложения в качестве поля POST Multipart / Form-Data в вашем запросе на отправку

Но я не совсем понимаю, как это сделать в Delphi 2009. Я видел ответы StackOverflow, в которых упоминается об этом, и в частности в этом посте объясняется, как сделать TIdMultiPartFormDataStream.

Пожалуйста, кто-нибудь может мне помочь с кодом для вставки этого потока в URL, который я отправляю в API?

Комментарий в другом вопросе StackOverflow гласил, что OP должен давать ссылку на документы API, поэтому здесь это , а здесь некоторые примеры на языках, которые я не являюсь знаком с, хотя я могу как-то понять C # один.

Я смотрел на этот вопрос и на этот , а также на множество других, но не вижу соответствующих примеров, используя Delphi 2009.

...