Sample code for 30+ languages & platforms
PHP Extension

MedTunnel: Send Message with File Attachment

See more MedTunnel Examples

Demonstrates the MedTunnel SendMessage method to send a message with a file attachment to one or more recipients.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$http = new CkHttp();

// Implements the following CURL command:

// curl https://server.medtunnel.com/MedTunnelMsg/api/Message/SendMessage -X POST -k 
//         -F "ApplicationId=yourApplicationId" -F "LocationId=yourLocationId" 
//         -F "MedTunnelId=yourMedTunnelId" -F "MedTunnelPassword=yourMedTunnelPassword" 
//         -F "To=recipientsMedTunnelId" 
//         -F "Body=Test of SendMessage"
//         -F "file1=@qa_data/jpg/starfish.jpg"

// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code

$req = new CkHttpRequest();
$req->put_HttpVerb('POST');
$req->put_Path('/MedTunnelMsg/api/Message/SendMessage');
$req->put_ContentType('multipart/form-data');

$req->AddParam('ApplicationId','yourApplicationId');
$req->AddParam('LocationId','yourLocationId');
$req->AddParam('MedTunnelId','yourMedTunnelId');
$req->AddParam('MedTunnelPassword','yourMedTunnelPassword');
$req->AddParam('To','recipientsMedTunnelId');
$req->AddParam('Body','Test');

$success = $req->AddFileForUpload2('file1','qa_data/jpg/starfish.jpg','application/octet-stream');

$req->AddHeader('Expect','100-continue');

$resp = new CkHttpResponse();
$success = $http->HttpSReq('server.medtunnel.com',443,true,$req,$resp);
if ($success == false) {
    print $http->lastErrorText() . "\n";
    exit;
}

$sbResponseBody = new CkStringBuilder();
$resp->GetBodySb($sbResponseBody);
$jResp = new CkJsonObject();
$jResp->LoadSb($sbResponseBody);
$jResp->put_EmitCompact(false);

print 'Response Body:' . "\n";
print $jResp->emit() . "\n";

$respStatusCode = $resp->get_StatusCode();
print 'Response Status Code = ' . $respStatusCode . "\n";
if ($respStatusCode >= 400) {
    print 'Response Header:' . "\n";
    print $resp->header() . "\n";
    print 'Failed.' . "\n";
    exit;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "ReturnCode": 1,
//   "ReturnCodeText": "Success",
//   "Data": "{\"Id\":989432,\"FromUserId\":36990,\"FromMailBoxId\":36965, ... \"SendGlobalNotifications\":false}"
// }

// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

$ReturnCode = $jResp->IntOf('ReturnCode');
$ReturnCodeText = $jResp->stringOf('ReturnCodeText');
$Data = $jResp->stringOf('Data');

// Load the Data into another JSON object and parse..
$jsonData = new CkJsonObject();
$jsonData->Load($Data);
$jsonData->put_EmitCompact(false);
print $jsonData->emit() . "\n";

// {
//   "Id": 989448,
//   "FromUserId": 36990,
//   "FromMailBoxId": 36965,
//   "FromUserType": 0,
//   "FromUserName": "...",
//   "FromUserFullName": "...",
//   "FromUserAccountName": "...",
//   "FromUserAccountTitle": "...",
//   "ToUserId": 36990,
//   "ToUserType": 1,
//   "ToUserMailboxId": "36965",
//   "ToUserName": "...",
//   "ToUserFullName": "...",
//   "EmailAddress": "",
//   "Password": "",
//   "Subject": "",
//   "PatientMedTunnelId": "",
//   "Body": "Test",
//   "DateReceived": "4/29/2021 2:48:22 PM",
//   "DisplayDateReceived": "04/29/2021  2:48 PM",
//   "ViewCount": 0,
//   "ViewedOn": "",
//   "AttachmentCount": 1,
//   "AttachmentNames": [
//     {
//       "MessageId": 989448,
//       "Id": 424857,
//       "Name": "starfish.jpg.35910fe9-4118-414c-a845-4d092ca6e784",
//       "DisplayName": "starfish.jpg",
//       "Size": 6229,
//       "WasViewed": false,
//       "ViewedOn": "",
//       "ViewCount": 0,
//       "Location": "Default"
//     }
//   ],
//   "AllRecipients": [
//     {
//       "Id": 989448,
//       "UserName": "...",
//       "AccountId": 0,
//       "AccountName": "...",
//       "AccountTitle": "",
//       "FirstName": "...",
//       "LastName": "...",
//       "EmailAddress": "",
//       "LastSentOn": "",
//       "SendCount": 0,
//       "IsFavorite": false
//     }
//   ],
//   "Status": 0,
//   "ParentMessageId": 989448,
//   "DistributionListId": 0,
//   "DistributionListName": "",
//   "BodyHistory": "",
//   "ReadReceiptCallbackUrl": null,
//   "SendGlobalNotifications": false
// }

$Id = $jsonData->IntOf('Id');
$FromUserId = $jsonData->IntOf('FromUserId');
$FromMailBoxId = $jsonData->IntOf('FromMailBoxId');
$FromUserType = $jsonData->IntOf('FromUserType');
$FromUserName = $jsonData->stringOf('FromUserName');
$FromUserFullName = $jsonData->stringOf('FromUserFullName');
$FromUserAccountName = $jsonData->stringOf('FromUserAccountName');
$FromUserAccountTitle = $jsonData->stringOf('FromUserAccountTitle');
$ToUserId = $jsonData->IntOf('ToUserId');
$ToUserType = $jsonData->IntOf('ToUserType');
$ToUserMailboxId = $jsonData->stringOf('ToUserMailboxId');
$ToUserName = $jsonData->stringOf('ToUserName');
$ToUserFullName = $jsonData->stringOf('ToUserFullName');
$EmailAddress = $jsonData->stringOf('EmailAddress');
$Password = $jsonData->stringOf('Password');
$Subject = $jsonData->stringOf('Subject');
$PatientMedTunnelId = $jsonData->stringOf('PatientMedTunnelId');
$Body = $jsonData->stringOf('Body');
$DateReceived = $jsonData->stringOf('DateReceived');
$DisplayDateReceived = $jsonData->stringOf('DisplayDateReceived');
$ViewCount = $jsonData->IntOf('ViewCount');
$ViewedOn = $jsonData->stringOf('ViewedOn');
$AttachmentCount = $jsonData->IntOf('AttachmentCount');
$Status = $jsonData->IntOf('Status');
$ParentMessageId = $jsonData->IntOf('ParentMessageId');
$DistributionListId = $jsonData->IntOf('DistributionListId');
$DistributionListName = $jsonData->stringOf('DistributionListName');
$BodyHistory = $jsonData->stringOf('BodyHistory');
$ReadReceiptCallbackUrl = $jsonData->stringOf('ReadReceiptCallbackUrl');
$SendGlobalNotifications = $jsonData->BoolOf('SendGlobalNotifications');
$i = 0;
$count_i = $jsonData->SizeOfArray('AttachmentNames');
while ($i < $count_i) {
    $jsonData->put_I($i);
    $MessageId = $jsonData->IntOf('AttachmentNames[i].MessageId');
    $Id = $jsonData->IntOf('AttachmentNames[i].Id');
    $Name = $jsonData->stringOf('AttachmentNames[i].Name');
    $DisplayName = $jsonData->stringOf('AttachmentNames[i].DisplayName');
    $Size = $jsonData->IntOf('AttachmentNames[i].Size');
    $WasViewed = $jsonData->BoolOf('AttachmentNames[i].WasViewed');
    $ViewedOn = $jsonData->stringOf('AttachmentNames[i].ViewedOn');
    $ViewCount = $jsonData->IntOf('AttachmentNames[i].ViewCount');
    $Location = $jsonData->stringOf('AttachmentNames[i].Location');
    $i = $i + 1;
}

$i = 0;
$count_i = $jsonData->SizeOfArray('AllRecipients');
while ($i < $count_i) {
    $jsonData->put_I($i);
    $Id = $jsonData->IntOf('AllRecipients[i].Id');
    $UserName = $jsonData->stringOf('AllRecipients[i].UserName');
    $AccountId = $jsonData->IntOf('AllRecipients[i].AccountId');
    $AccountName = $jsonData->stringOf('AllRecipients[i].AccountName');
    $AccountTitle = $jsonData->stringOf('AllRecipients[i].AccountTitle');
    $FirstName = $jsonData->stringOf('AllRecipients[i].FirstName');
    $LastName = $jsonData->stringOf('AllRecipients[i].LastName');
    $EmailAddress = $jsonData->stringOf('AllRecipients[i].EmailAddress');
    $LastSentOn = $jsonData->stringOf('AllRecipients[i].LastSentOn');
    $SendCount = $jsonData->IntOf('AllRecipients[i].SendCount');
    $IsFavorite = $jsonData->BoolOf('AllRecipients[i].IsFavorite');
    $i = $i + 1;
}


?>