();
35 |
36 | if (!partialViewName.EndsWith(".cshtml", StringComparison.OrdinalIgnoreCase)
37 | && !partialViewName.EndsWith(".vbhtml", StringComparison.OrdinalIgnoreCase))
38 | {
39 | possibleFilenames.Add(partialViewName + ".cshtml");
40 | possibleFilenames.Add(partialViewName + ".vbhtml");
41 | }
42 | else
43 | {
44 | possibleFilenames.Add(partialViewName);
45 | }
46 |
47 | var possibleFullPaths = possibleFilenames.Select(GetViewFullPath).ToArray();
48 |
49 | var existingPath = possibleFullPaths.FirstOrDefault(ResourceExists);
50 |
51 | if (existingPath != null)
52 | {
53 | return new ViewEngineResult(new ResourceRazorView(viewSourceAssembly, existingPath), this);
54 | }
55 |
56 | return new ViewEngineResult(possibleFullPaths);
57 | }
58 |
59 | ///
60 | /// Tries to find a razor view (.cshtml or .vbhtml files).
61 | ///
62 | public ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
63 | {
64 | return FindPartialView(controllerContext, viewName, useCache);
65 | }
66 |
67 | ///
68 | /// Does nothing.
69 | ///
70 | public void ReleaseView(ControllerContext controllerContext, IView view)
71 | {
72 | // Nothing to do here - ResourceRazorView does not need disposing.
73 | }
74 |
75 | string GetViewFullPath(string path)
76 | {
77 | return String.Format("{0}.{1}", viewPathRoot, path);
78 | }
79 |
80 | bool ResourceExists(string name)
81 | {
82 | return viewSourceAssembly.GetManifestResourceNames().Contains(name);
83 | }
84 | }
85 | }
--------------------------------------------------------------------------------
/src/Postal/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Postal/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/ConsoleSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {2C24E942-E0E1-4116-838B-ACD25653D5B2}
8 | Exe
9 | Properties
10 | ConsoleSample
11 | ConsoleSample
12 | v4.5
13 | 512
14 | ..\..\..\
15 | true
16 |
17 |
18 | AnyCPU
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | AnyCPU
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 |
38 | True
39 | ..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
40 |
41 |
42 |
43 |
44 | False
45 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.Helpers.dll
46 |
47 |
48 |
49 | False
50 | ..\..\..\packages\Microsoft.AspNet.Mvc.5.1.1\lib\net45\System.Web.Mvc.dll
51 |
52 |
53 | False
54 | ..\..\..\packages\Microsoft.AspNet.Razor.3.1.1\lib\net45\System.Web.Razor.dll
55 |
56 |
57 | False
58 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.dll
59 |
60 |
61 | False
62 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Deployment.dll
63 |
64 |
65 | False
66 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Razor.dll
67 |
68 |
69 |
70 |
71 | {779257ef-f8dd-495b-8b54-1f2e6ac5fa9b}
72 | Postal
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
93 |
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/Program.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Web.Mvc;
3 | using Postal;
4 |
5 | namespace ConsoleSample
6 | {
7 | /*
8 | Before running this sample, please start the SMTP development server,
9 | found in the Postal code directory: tools\smtp4dev.exe
10 |
11 | Use the SMTP development server to inspect the contents of generated email (headers, content, etc).
12 | No email is really sent, so it's perfect for debugging.
13 | */
14 |
15 | class Program // That's right, no asp.net runtime required!
16 | {
17 | static void Main(string[] args)
18 | {
19 | // Get the path to the directory containing views
20 | var viewsPath = Path.GetFullPath(@"..\..\Views");
21 |
22 | var engines = new ViewEngineCollection();
23 | engines.Add(new FileSystemRazorViewEngine(viewsPath));
24 |
25 | var service = new EmailService(engines);
26 |
27 | dynamic email = new Email("Test");
28 | email.Message = "Hello, non-asp.net world!";
29 | service.Send(email);
30 |
31 | // Alternatively, set the service factory like this:
32 | /*
33 | Email.CreateEmailService = () => new EmailService(engines);
34 |
35 | dynamic email = new Email("Test");
36 | email.Message = "Hello, non-asp.net world!";
37 | email.Send();
38 | */
39 | }
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("ConsoleSample")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("Microsoft")]
11 | [assembly: AssemblyProduct("ConsoleSample")]
12 | [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("5b6e1475-dce8-474f-9654-a081b49263a7")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/Views/Test.cshtml:
--------------------------------------------------------------------------------
1 | To: test@test.com
2 | From: test@test.com
3 | Subject: Subject here
4 |
5 | Example email.
6 | @Model.Message
7 |
8 | @* You HAVE to use Model when using file system razor views. ViewBag will not work. *@
9 | @* See http://razorengine.codeplex.com/ for more info *@
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/Samples/ConsoleSample/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/Program.cs:
--------------------------------------------------------------------------------
1 |
2 | using Postal;
3 | using System.Web.Mvc;
4 |
5 | namespace ResourceSample
6 | {
7 | /*
8 | Before running this sample, please start the SMTP development server,
9 | found in the Postal code directory: tools\smtp4dev.exe
10 |
11 | Use the SMTP development server to inspect the contents of generated email (headers, content, etc).
12 | No email is really sent, so it's perfect for debugging.
13 | */
14 |
15 | class Program
16 | {
17 | static void Main()
18 | {
19 | var engines = new ViewEngineCollection
20 | {
21 | new ResourceRazorViewEngine(typeof(Program).Assembly, @"ResourceSample.Resources.Views")
22 | };
23 |
24 | var service = new EmailService(engines);
25 |
26 | dynamic email = new Email("Test");
27 | email.Message = "Hello, non-asp.net world!";
28 | service.Send(email);
29 | }
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("ResourceSample")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("ResourceSample")]
12 | [assembly: AssemblyCopyright("Copyright © Andrew Davey 2013")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("fddbbd60-cdda-4e67-9ad9-f7861128d7b3")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/ResourceSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {AB26BB59-F976-4361-A041-21C7EF1F2AE5}
8 | Exe
9 | Properties
10 | ResourceSample
11 | ResourceSample
12 | v4.5
13 | 512
14 | ..\..\..\
15 | true
16 |
17 |
18 |
19 | AnyCPU
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | DEBUG;TRACE
25 | prompt
26 | 4
27 | false
28 |
29 |
30 | AnyCPU
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE
35 | prompt
36 | 4
37 | false
38 |
39 |
40 |
41 | True
42 | ..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
43 |
44 |
45 |
46 |
47 | False
48 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.Helpers.dll
49 |
50 |
51 | False
52 | ..\..\..\packages\Microsoft.AspNet.Mvc.5.1.1\lib\net45\System.Web.Mvc.dll
53 |
54 |
55 | False
56 | ..\..\..\packages\Microsoft.AspNet.Razor.3.1.1\lib\net45\System.Web.Razor.dll
57 |
58 |
59 | False
60 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.dll
61 |
62 |
63 | False
64 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Deployment.dll
65 |
66 |
67 | False
68 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Razor.dll
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | {779257ef-f8dd-495b-8b54-1f2e6ac5fa9b}
79 | Postal
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
100 |
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/Resources/Views/Test.cshtml:
--------------------------------------------------------------------------------
1 | To: test@test.com
2 | From: test@test.com
3 | Subject: Subject here
4 |
5 | Example email.
6 | @Model.Message
7 |
8 | @* You HAVE to use Model when using file system razor views. ViewBag will not work. *@
9 | @* See http://razorengine.codeplex.com/ for more info *@
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/Samples/ResourceSample/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/App_Start/FilterConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Mvc;
2 |
3 | namespace WebSample
4 | {
5 | public class FilterConfig
6 | {
7 | public static void RegisterGlobalFilters(GlobalFilterCollection filters)
8 | {
9 | filters.Add(new HandleErrorAttribute());
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/App_Start/RouteConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using System.Web.Mvc;
6 | using System.Web.Routing;
7 |
8 | namespace WebSample
9 | {
10 | public class RouteConfig
11 | {
12 | public static void RegisterRoutes(RouteCollection routes)
13 | {
14 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 |
16 | routes.MapRoute(
17 | name: "Default",
18 | url: "{controller}/{action}/{id}",
19 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
20 | );
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/Content/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | .btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--------------------------------------------------------------------------------
/src/Samples/WebSample/Content/postal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewdavey/postal/9b0e426aa79af93ce67b8b1a6f08d561f0f07248/src/Samples/WebSample/Content/postal.png
--------------------------------------------------------------------------------
/src/Samples/WebSample/Controllers/EmailController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Web.Mvc;
3 | using Postal;
4 |
5 | namespace WebSample.Controllers
6 | {
7 | public class EmailController : Controller
8 | {
9 | [HttpPost]
10 | public ActionResult SendSimple()
11 | {
12 | dynamic email = new Email("Simple");
13 | email.Date = DateTime.UtcNow.ToString();
14 | email.Send();
15 |
16 | return RedirectToAction("Sent", "Home");
17 | }
18 |
19 | [HttpPost]
20 | public ActionResult SendMultiPart()
21 | {
22 | dynamic email = new Email("MultiPart");
23 | email.Date = DateTime.UtcNow.ToString();
24 | email.Send();
25 |
26 | return RedirectToAction("Sent", "Home");
27 | }
28 |
29 | [HttpPost]
30 | public ActionResult SendTypedEmail()
31 | {
32 | var email = new TypedEmail();
33 | email.Date = DateTime.UtcNow.ToString();
34 | email.Send();
35 |
36 | return RedirectToAction("Sent", "Home");
37 | }
38 | }
39 |
40 | public class TypedEmail : Email
41 | {
42 | public string Date { get; set; }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using System.Web.Mvc;
2 |
3 | namespace WebSample.Controllers
4 | {
5 | public class HomeController : Controller
6 | {
7 | public ActionResult Index()
8 | {
9 | return View();
10 | }
11 |
12 | public ActionResult Samples()
13 | {
14 | return View();
15 | }
16 |
17 | public ActionResult Sent()
18 | {
19 | return View();
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Controllers/PreviewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using System.Web.Mvc;
6 | using Postal;
7 |
8 | namespace WebSample.Controllers
9 | {
10 | public class PreviewController : Controller
11 | {
12 | public ActionResult Simple()
13 | {
14 | dynamic email = new Email("Simple");
15 | email.Date = DateTime.UtcNow.ToString();
16 |
17 | return new EmailViewResult(email);
18 | }
19 |
20 | public ActionResult SimpleHtml()
21 | {
22 | dynamic email = new Email("SimpleHtml");
23 | email.Date = DateTime.UtcNow.ToString();
24 |
25 | return new EmailViewResult(email);
26 | }
27 |
28 | public ActionResult MultiPart()
29 | {
30 | dynamic email = new Email("MultiPart");
31 | email.Date = DateTime.UtcNow.ToString();
32 |
33 | return new EmailViewResult(email);
34 | }
35 |
36 | public ActionResult Typed()
37 | {
38 | var email = new TypedEmail();
39 | email.Date = DateTime.UtcNow.ToString();
40 |
41 | return new EmailViewResult(email);
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/Global.asax:
--------------------------------------------------------------------------------
1 | <%@ Application Codebehind="Global.asax.cs" Inherits="WebSample.MvcApplication" Language="C#" %>
2 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Global.asax.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 | using System.Web.Mvc;
3 | using System.Web.Routing;
4 |
5 | namespace WebSample
6 | {
7 | public class MvcApplication : HttpApplication
8 | {
9 | protected void Application_Start()
10 | {
11 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
12 | RouteConfig.RegisterRoutes(RouteTable.Routes);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WebSample")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WebSample")]
13 | [assembly: AssemblyCopyright("Copyright © 2013")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("0dee574a-3e2c-425f-8f0e-6f72f9926a1b")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/MultiPart.Html.cshtml:
--------------------------------------------------------------------------------
1 | Content-Type: text/html; charset=utf8
2 |
3 |
4 |
5 | This is an HTML
message
6 | Generated by Postal on @ViewBag.Date
7 |
8 | @Html.EmbedImage("~/Content/postal.png")
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/MultiPart.Text.cshtml:
--------------------------------------------------------------------------------
1 | Content-Type: text/plain; charset=utf8
2 |
3 | This is a plain text message
4 |
5 | Generated by Postal on @ViewBag.Date
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/MultiPart.cshtml:
--------------------------------------------------------------------------------
1 | To: test@example.org
2 | From: test@example.org
3 | Subject: Multi-part email example
4 | Views: Text,Html
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/Simple.cshtml:
--------------------------------------------------------------------------------
1 | To: test@example.org
2 | From: test@example.org
3 | Subject: Simple email example
4 |
5 | Hello, world!
6 |
7 | The date is: @ViewBag.Date
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/SimpleHtml.cshtml:
--------------------------------------------------------------------------------
1 | To: test@example.org
2 | From: test@example.org
3 | Subject: Simple email example
4 |
5 |
6 |
7 |
8 | Html
9 | The date is: @ViewBag.Date
10 | The To; From and Subject information is rendered as HTML comment.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/Typed.cshtml:
--------------------------------------------------------------------------------
1 | @model WebSample.Controllers.TypedEmail
2 | To: test@example.org
3 | From: test@example.org
4 | Subject: Simple email example
5 |
6 | Hello, world!
7 |
8 | The date is: @Model.Date
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Emails/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = null;
3 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Home/Index.cshtml:
--------------------------------------------------------------------------------
1 | Postal Samples
2 |
3 | Before running these samples, please start the SMTP development server,
4 | found in the Postal code directory: tools\smtp4dev.exe
5 |
6 |
7 | Use the SMTP development server to inspect the contents of generated email (headers, content, etc).
8 | No email is really sent, so it's perfect for debugging.
9 |
10 |
11 | Continue »
12 |
13 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Home/Samples.cshtml:
--------------------------------------------------------------------------------
1 | Postal Samples
2 |
3 |
4 | The send buttons on this page post to Controllers\EmailController.cs
5 | The preview buttons on this page go to Controllers\PreviewController.cs
6 |
7 |
8 | Sending a basic email
9 | Email will be generated from Views\Email\Simple.cshtml
10 |
14 |
15 | Strongly-typed email class
16 | Email will be generated from Views\Email\Typed.cshtml
17 |
21 |
22 | Multipart emails
23 |
24 | Use separate views to define HTML and plain-text content for a single email.
25 |
26 | Views\Email\Simple.cshtml
27 | Views\Email\Simple.Html.cshtml
28 | Views\Email\Simple.Text.cshtml
29 |
30 | Images can be embedded into the email using @@Html.EmbedImage("~/image.png")
.
31 |
32 |
38 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Home/Sent.cshtml:
--------------------------------------------------------------------------------
1 | Email Sent
2 |
3 | Continue »
4 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Shared/_Layout.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Postal Samples
5 |
6 |
7 |
8 |
9 | @RenderBody()
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
40 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/_Layout.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Samples/WebSample/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/WebSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 |
8 |
9 | 2.0
10 | {20E5601B-354D-4393-951C-C3BCC970EAAC}
11 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
12 | Library
13 | Properties
14 | WebSample
15 | WebSample
16 | v4.5
17 | false
18 | true
19 |
20 |
21 |
22 |
23 | ..\..\..\
24 | true
25 |
26 |
27 |
28 | true
29 | full
30 | false
31 | bin\
32 | DEBUG;TRACE
33 | prompt
34 | 4
35 | false
36 |
37 |
38 | pdbonly
39 | true
40 | bin\
41 | TRACE
42 | prompt
43 | 4
44 | false
45 |
46 |
47 |
48 |
49 | True
50 | ..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
51 |
52 |
53 | ..\..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | False
62 | ..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.1.1\lib\net45\System.Net.Http.Formatting.dll
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | False
71 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.Helpers.dll
72 |
73 |
74 | False
75 | ..\..\..\packages\Microsoft.AspNet.WebApi.Core.5.1.1\lib\net45\System.Web.Http.dll
76 |
77 |
78 | False
79 | ..\..\..\packages\Microsoft.AspNet.WebApi.WebHost.5.1.1\lib\net45\System.Web.Http.WebHost.dll
80 |
81 |
82 |
83 |
84 | False
85 | ..\..\..\packages\Microsoft.AspNet.Mvc.5.1.1\lib\net45\System.Web.Mvc.dll
86 |
87 |
88 | False
89 | ..\..\..\packages\Microsoft.AspNet.Razor.3.1.1\lib\net45\System.Web.Razor.dll
90 |
91 |
92 |
93 | False
94 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.dll
95 |
96 |
97 | False
98 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Deployment.dll
99 |
100 |
101 | False
102 | ..\..\..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.Razor.dll
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 | Global.asax
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 | Web.config
143 |
144 |
145 | Web.config
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 | {779257ef-f8dd-495b-8b54-1f2e6ac5fa9b}
168 | Postal
169 |
170 |
171 |
172 |
173 |
174 |
175 | 10.0
176 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | True
189 | True
190 | 0
191 | /
192 | http://localhost:16807/
193 | False
194 | False
195 |
196 |
197 | False
198 |
199 |
200 |
201 |
202 |
203 |
209 |
--------------------------------------------------------------------------------
/src/Samples/WebSample/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewdavey/postal/9b0e426aa79af93ce67b8b1a6f08d561f0f07248/src/Samples/WebSample/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/src/Samples/WebSample/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewdavey/postal/9b0e426aa79af93ce67b8b1a6f08d561f0f07248/src/Samples/WebSample/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/src/Samples/WebSample/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewdavey/postal/9b0e426aa79af93ce67b8b1a6f08d561f0f07248/src/Samples/WebSample/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/src/Samples/WebSample/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tools/smtp4dev-license.txt:
--------------------------------------------------------------------------------
1 | New BSD License (BSD)
2 | Copyright (c) 2009-2011, Robert Wood
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8 |
9 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10 |
11 | * Neither the name of smtp4dev nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12 |
13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/tools/smtp4dev.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/andrewdavey/postal/9b0e426aa79af93ce67b8b1a6f08d561f0f07248/tools/smtp4dev.exe
--------------------------------------------------------------------------------