We've just released a beta version of our new SOAP API which harnesses many of the features found in our recently launched Letter 2.0 writing interface.
More documentation will follow soon, but for now here is an example for using the API.
The example in this article uses C#, we will cover using the service from other languages in future, for now here are some links about SOAP in those languages.
The following example illustrates how to upload a PDF attachment and write a cover letter with our new API the sample below is in C# using Visual Studio .NET. More examples in other languages will follow.
Firstly add a new service reference to your project, ensure you use https in the service address as below.
The code for the example is below. As with our other interfaces, in order to get the correct envelope, paper, print type and postage type please refer to our Letter Pricing API or contact us with your requirements and we will be more than happy to provide suitable values for you.
1: using System;
2: using System.IO;
3: using System.Text;
4: using PC2PaperLetterCustomerAPIExample.PC2PaperAPI;
5:
6: namespace PC2PaperLetterCustomerAPIExample
7: {
8: static class Program
9: {
10:
11: static void Main()
12: {
13: SendLetter();
14: }
15:
16: static void SendLetter()
17: {
18: //Your PC2Paper username and password go here.
19: string username = "yourusername";
20: string password = "yourpassword";
21:
22: var pc2PaperAPI = new PC2PaperAPI.LetterCustomerAPIClient();
23:
24:
25: //1. First we upload the files we want to attach to our letter
26: // If you don't want to attach any files you can leave this step out.
27: // NOTE: You can also upload files async if using WCF Async methods are enables so you don't hang a UI thread for example.
28:
29: // You can add as many PDF's as you want in this way. Just remember to grab the GUID's from each submit to the server.
30: // below we are only attaching one.
31: var fileContent =
32: LoadBinaryFileAsByteArray(
33: @"c:\temp\testPDF.pdf");
34:
35:
36: string fileName = "testPDF.pdf";
37:
38: var uploadDocumentResults = pc2PaperAPI.UploadDocument(fileName, fileContent, username, password);
39:
40:
41: if(uploadDocumentResults.Status!="OK")
42: {
43: // Oops an error took place.
44: Console.WriteLine(uploadDocumentResults.ErrorMessages.ToString());
45: return;
46: }
47:
48: //2. Create a letter to attach out PDF to.
49: var letter = new LetterForPosting();
50:
51: letter.Addresses = new LetterAddressForPosting[]
52: {
53: new LetterAddressForPosting()
54: {
55: ReceiverName = "Tom Smith",
56: ReceiverAddressLine1 = "Acme Co",
57: ReceiverAddressLine2 = "2 Acme Street",
58: ReceiverAddressTownCityOrLine3 = "Acme Town",
59: ReceiverAddressCountyStateOrLine4 = "State",
60: ReceiverAddressPostCode = "ZN12 9xn"
61: }
62: };
63:
64: letter.ReceiverCountryCode = 1;
65:
66: letter.Envelope = 1;
67: letter.Postage = 3; //UK First Class
68: letter.Paper = 1;
69: letter.Extras = 0;
70: letter.SenderAddress = "Peter Smith\n 72 Some Road \n Some Town \n P23 123";
71: letter.Pages = 1;
72:
73: // We are also putting a cover letter onto our letter. (The cover letter will always be in front)
74: // Leave the LetterBody line out if you do not wish to include one.
75: var bodyOfLetter = new StringBuilder();
76:
77: bodyOfLetter.Append("Dear Tom
");
78:
79: bodyOfLetter.Append("How are you? I'm sending you a letter via the PC2Paper API
");
80:
81: bodyOfLetter.Append("Regards,
Peter
");
82:
83: letter.LetterBody = bodyOfLetter.ToString();
84:
85: // delete this line if you only wish to send a cover letter
86: letter.FileAttachementGUIDs = new string[] { uploadDocumentResults.FileCreatedGUID};
87:
88: var letterSendingResult = pc2PaperAPI.SendSubmitLetterForPosting(letter, username, password);
89:
90: Console.WriteLine("Result:" + letterSendingResult.Status + " with letter id:" + letterSendingResult.LetterId);
91:
92: }
93:
94: static byte[] LoadBinaryFileAsByteArray(string filename)
95: {
96: var binReader = new
97: BinaryReader(File.Open(filename, FileMode.Open,
98: FileAccess.Read));
99: binReader.BaseStream.Position = 0;
100: byte[] binFile =
101: binReader.ReadBytes(Convert.ToInt32(binReader.BaseStream.Length));
102: binReader.Close();
103:
104: return binFile;
105: }
106:
107: }
108: }
If you have any questions, please let us know.