2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Collections.Generic;
19 using System.Collections.ObjectModel;
21 namespace Tizen.Messaging.Email
24 /// This class contains the Messaging API to support sending email messages.
26 public class EmailMessage : IDisposable
28 internal IntPtr _emailHandle = IntPtr.Zero;
29 private bool _disposed = false;
30 private String _subject;
32 private IList<EmailAttachment> _attachments = new List<EmailAttachment>();
33 private ICollection<EmailRecipient> _to = new Collection<EmailRecipient>();
34 private ICollection<EmailRecipient> _cc = new Collection<EmailRecipient>();
35 private ICollection<EmailRecipient> _bcc = new Collection<EmailRecipient>();
42 int ret = Interop.Email.CreateEmail(out _emailHandle);
43 if (ret != (int)EmailError.None)
45 Log.Error(EmailErrorFactory.LogTag, "Failed to create message handle, Error code: " + (EmailError)ret);
46 throw EmailErrorFactory.GetException(ret);
51 /// The subject of the email message.
58 int ret = Interop.Email.SetSubject(_emailHandle, _subject);
59 if (ret != (int)EmailError.None)
61 Log.Error(EmailErrorFactory.LogTag, "Failed to set subject, Error code: " + (EmailError)ret);
62 throw EmailErrorFactory.GetException(ret);
73 /// The body of the email message.
80 int ret = Interop.Email.SetBody(_emailHandle, _body);
81 if (ret != (int)EmailError.None)
83 Log.Error(EmailErrorFactory.LogTag, "Failed to set body, Error code: " + (EmailError)ret);
84 throw EmailErrorFactory.GetException(ret);
94 /// The list of file attachments.
96 public IList<EmailAttachment> Attachments
105 /// The collection of normal email recipients.
108 /// The email address should be in the standard format (as described in the Internet standards RFC 5321 and RFC 5322).
110 public ICollection<EmailRecipient> To
119 /// The collection of CC (carbon copy) email recipients.
122 /// The email address should be in the standard format (as described in the Internet standards RFC 5321 and RFC 5322).
124 public ICollection<EmailRecipient> Cc
133 /// The collection of BCC (blind carbon copy) email recipients.
136 /// The email address should be in the standard format (as described in the Internet standards RFC 5321 and RFC 5322).
138 public ICollection<EmailRecipient> Bcc
152 ret = Interop.Email.SaveEmail(_emailHandle);
153 if (ret != (int)EmailError.None)
155 Log.Error(EmailErrorFactory.LogTag, "Failed to save email, Error code: " + (EmailError)ret);
156 throw EmailErrorFactory.GetException(ret);
161 /// Releases all resources used by the EmailMessage.
163 public void Dispose()
166 GC.SuppressFinalize(this);
170 /// Releases all resources used by the EmailMessage.
172 /// <param name="disposing">Disposing by User</param>
173 protected virtual void Dispose(bool disposing)
183 if (_emailHandle != IntPtr.Zero)
185 Interop.Email.DestroyEmail(_emailHandle);
186 _emailHandle = IntPtr.Zero;
191 internal void FillHandle()
193 int ret = (int)EmailError.None;
194 foreach (EmailAttachment it in Attachments)
196 Console.WriteLine(it.FilePath);
197 ret = Interop.Email.AddAttachment(_emailHandle, it.FilePath);
198 if (ret != (int)EmailError.None)
200 Log.Error(EmailErrorFactory.LogTag, "Failed to add attachment, Error code: " + (EmailError)ret);
201 throw EmailErrorFactory.GetException(ret);
205 foreach (EmailRecipient it in To)
207 ret = Interop.Email.AddRecipient(_emailHandle, (int)Interop.EmailRecipientType.To, it.Address);
208 if (ret != (int)EmailError.None)
210 Log.Error(EmailErrorFactory.LogTag, "Failed to add recipients, Error code: " + (EmailError)ret);
211 throw EmailErrorFactory.GetException(ret);
215 foreach (EmailRecipient it in Cc)
217 ret = Interop.Email.AddRecipient(_emailHandle, (int)Interop.EmailRecipientType.Cc, it.Address);
218 if (ret != (int)EmailError.None)
220 Log.Error(EmailErrorFactory.LogTag, "Failed to add recipients, Error code: " + (EmailError)ret);
221 throw EmailErrorFactory.GetException(ret);
225 foreach (EmailRecipient it in Bcc)
227 ret = Interop.Email.AddRecipient(_emailHandle, (int)Interop.EmailRecipientType.Bcc, it.Address);
228 if (ret != (int)EmailError.None)
230 Log.Error(EmailErrorFactory.LogTag, "Failed to add recipients, Error code: " + (EmailError)ret);
231 throw EmailErrorFactory.GetException(ret);