/// <returns>Filenames that can be used for checking status of batches.</returns> public virtual async Task <IEnumerable <string> > SendMessageBatchAsync(TransactMessage message) { if (message == null) { throw new ArgumentNullException("message"); } MessageBatchPreCommunicationVerification(); var filenames = new List <string>(); using (var silverpop = _silverpopFactory()) { var batchedMessages = message.SelectRecipientDataBatchedMessages( TransactClientConfiguration.MaxRecipientsPerBatchRequest); var identifier = Guid.NewGuid().ToString(); foreach (var batchMessage in batchedMessages) { var encodedMessage = _encoder.Encode(batchMessage); var filename = string.Format( "{0}.{1}.xml.gz", identifier, filenames.Count() + 1); silverpop.SftpCreateDirectoryIfNotExists("transact/temp"); await silverpop.SftpGzipUploadAsync( encodedMessage, "transact/temp/" + filename).ConfigureAwait(false); await silverpop.SftpMoveAsync( "transact/temp/" + filename, "transact/inbound/" + filename).ConfigureAwait(false); filenames.Add(filename + ".status"); } } return(filenames); }