{"id":11689,"date":"2018-11-18T12:09:07","date_gmt":"2018-11-18T20:09:07","guid":{"rendered":"https:\/\/www.seedcode.com\/?p=11689"},"modified":"2023-06-13T22:34:06","modified_gmt":"2023-06-13T22:34:06","slug":"html-email-filemaker-gmail","status":"publish","type":"post","link":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/","title":{"rendered":"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails"},"content":{"rendered":"<p>This is the first in a series of articles on using the Gmail API from FileMaker. We&#8217;ll provide free example files for each post and these examples will all use the native Insert From URL script step so there won\u2019t be any plug-ins required.<\/p>\n<p>In this article, we\u2019re going to look at sending HTML emails. In future articles, I\u2019ll examine sending large emails (35MB) with multiple attachments, resumable uploading, and managing threads. This approach provides a first-rate email experience that is <em>not<\/em> available using the native Send Mail script step. And, since the Insert From URL script step is supported natively across the whole FileMaker platform, <strong>the techniques shown here work on the Server, Go, FileMaker Cloud and WebDirect<\/strong>.\u00a0This technique requires FileMaker 16 or higher since we&#8217;ll be using the advanced <a href=\"https:\/\/fmhelp.filemaker.com\/help\/17\/fmp\/en\/index.html#page\/FMP_Help%2Fcurl-options.html%23ww1127302\" target=\"_blank\" rel=\"noopener\">cURL options<\/a> introduced in FileMaker 16.<\/p>\n<p>Here&#8217;s an introduction. Step-by-step instructions and an unlocked example file follow:<\/p>\n<p><iframe title=\"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails\" src=\"https:\/\/player.vimeo.com\/video\/301476474?dnt=1&amp;app_id=122963\" width=\"960\" height=\"540\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<h2>Background and Choosing the Gmail API<\/h2>\n<p>I recently had the opportunity to build a comprehensive Gmail integration into a client\u2019s system. The main reason the client wanted to go the Gmail route was to have seamless integration with their native Gmail experience; at first they weren&#8217;t that interested in threads or large attachments, but those features soon became important once they started emailing from within FileMaker.<\/p>\n<p>Before we started, the client and I discussed which route we wanted to take, like using a plug-in or rolling our own. Fortunately, right about this time, dbservices published a <a href=\"https:\/\/href.li\/?https:\/\/dbservices.com\/articles\/filemaker-gmail-integration\/\" target=\"_blank\" rel=\"noopener\">great blog post and example file<\/a> on integrating with the Gmail API. This article provided great techniques for authenticating to Google as well as creating an inbox in FileMaker that would import Gmails with their attachments. Basically, they had already done a lot of the work we needed. I implemented their authentication and inbox routine and then added the techniques I\u2019m going to share here.<\/p>\n<p><!--more--><\/p>\n<h2 class=\"p1\"><span class=\"s1\">Example File<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Please download the example file <a href=\"\/wp-content\/uploads\/2018\/11\/FM2Gmail_Part1.zip\">FM2Gmail<\/a> for a working demo. This first version just covers the sending of HTML emails and we\u2019ll be providing later versions of this file in future articles.<\/span><\/p>\n<figure id=\"attachment_11696\" aria-describedby=\"caption-attachment-11696\" style=\"width: 898px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/example-file.png\" target=\"_blank\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-11696 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/example-file.png\" alt=\"Integrating FileMaker and Gmail - Example File\" width=\"898\" height=\"947\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/example-file.png 898w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/example-file-284x300.png 284w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/example-file-768x810.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><figcaption id=\"caption-attachment-11696\" class=\"wp-caption-text\">FM2Gmail Example File<\/figcaption><\/figure>\n<h2 class=\"p1\"><span class=\"s1\">Getting Started \/ Authentication<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Before we can send any emails, we\u2019ll need to authenticate our app to Google. Our example file has adapted the authentication routine provided by <a href=\"https:\/\/dbservices.com\/articles\/filemaker-gmail-integration\/\" target=\"_blank\" rel=\"noopener noreferrer\">dbservices<\/a>\u00a0where you&#8217;ll find more details on setting up a Google project for the OAuth values. Specify Web Application for your project so the redirect URI value is available. Once you\u2019ve got your Client ID and Client Secret you can enter them into the fields on the OAuth settings page.<\/span><\/p>\n<figure id=\"attachment_11699\" aria-describedby=\"caption-attachment-11699\" style=\"width: 898px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/settingspopup.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"wp-image-11699 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/settingspopup.png\" alt=\"Integrating FileMaker with Gmail - Settings\" width=\"898\" height=\"947\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/settingspopup.png 898w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/settingspopup-284x300.png 284w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/settingspopup-768x810.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><figcaption id=\"caption-attachment-11699\" class=\"wp-caption-text\">Settings Popover<\/figcaption><\/figure>\n<figure id=\"attachment_11700\" aria-describedby=\"caption-attachment-11700\" style=\"width: 898px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/authentication.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"wp-image-11700 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/authentication.png\" alt=\"Authenticating Google Account within FileMaker\" width=\"898\" height=\"947\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authentication.png 898w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authentication-284x300.png 284w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authentication-768x810.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><figcaption id=\"caption-attachment-11700\" class=\"wp-caption-text\">Authentication Set-Up<\/figcaption><\/figure>\n<p>With your Client ID and Client Secret entered, you can click the \u201cauthenticate to gmail\u201d link on the left. This opens a web viewer in a card window where you can log-into your Google account and authorize access to your Gmail data.<\/p>\n<figure id=\"attachment_11701\" aria-describedby=\"caption-attachment-11701\" style=\"width: 898px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/authorize.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11701 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/authorize.png\" alt=\"Authorize FileMaker to access Gmail\" width=\"898\" height=\"972\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authorize.png 898w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authorize-277x300.png 277w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/authorize-768x831.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/a><figcaption id=\"caption-attachment-11701\" class=\"wp-caption-text\">Authorize your app to access Gmail data<\/figcaption><\/figure>\n<p>When you\u2019ve successfully authenticated and authorized you\u2019ll see your email address take the place of the \u201cauthenticate to gmail\u201d link.<\/p>\n<h2>Important!<\/h2>\n<p class=\"p1\">At this point, the example file has an authorization Refresh Token which we\u2019ll use to automatically authenticate when the file opens in the future. So take some care with the file once it\u2019s authorized as it will have access to your Gmail when opened. You can de-authorize the app access at any time by visiting \u201cMy Account\u201d from your Google settings and then finding Apps with account access section. From there you can de-authorize the app.<\/p>\n<figure id=\"attachment_11703\" aria-describedby=\"caption-attachment-11703\" style=\"width: 872px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/remove-access.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11703 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/remove-access.png\" alt=\"Integrating FileMaker and Gmail Authorization\" width=\"872\" height=\"793\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/remove-access.png 872w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/remove-access-300x273.png 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/remove-access-768x698.png 768w\" sizes=\"(max-width: 872px) 100vw, 872px\" \/><\/a><figcaption id=\"caption-attachment-11703\" class=\"wp-caption-text\">Remove app access from Google<\/figcaption><\/figure>\n<h2 class=\"p1\"><span class=\"s1\">Sending an HTML Email from FileMaker<\/span><\/h2>\n<p>Now that we\u2019re authorized, the new email button appears, and we can compose and send something. I was going to use a card window for the compose layout, but I wanted to expose the formatting bar so went with a Floating window instead. (Exposing the formatting bar is an old <a href=\"https:\/\/filemakerhacks.com\/2014\/06\/14\/showhide-formatting-bar\/\" target=\"_blank\" rel=\"noopener\">FileMaker Hacks trick<\/a>). Showing the formatting bar lets you easily add some styles to our text; those text styles will get transformed into styled HTML.]<\/p>\n<figure id=\"attachment_11704\" aria-describedby=\"caption-attachment-11704\" style=\"width: 812px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/compose.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11704 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/compose.png\" alt=\"Compose HTML email in FIleMaker\" width=\"812\" height=\"853\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/compose.png 812w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/compose-286x300.png 286w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/compose-768x807.png 768w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/a><figcaption id=\"caption-attachment-11704\" class=\"wp-caption-text\">Composing an email with styled text<\/figcaption><\/figure>\n<p>I also added a simple emoji picker for fun. These are just button bars that are passing the emoji characters into the text. Since we\u2019re just using the unicode characters, the emojis are a little spartan on Windows but work fine for a simple demo.<\/p>\n<figure id=\"attachment_11705\" aria-describedby=\"caption-attachment-11705\" style=\"width: 812px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/emojis.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11705 size-full\" src=\"https:\/\/www.seedcode.com\/wp-content\/uploads\/2018\/11\/emojis.png\" alt=\"Emoji Picker for FileMaker\" width=\"812\" height=\"853\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/emojis.png 812w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/emojis-286x300.png 286w, https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/emojis-768x807.png 768w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/a><figcaption id=\"caption-attachment-11705\" class=\"wp-caption-text\">An Emoji Picker<\/figcaption><\/figure>\n<p>We can then send our Email and when we look at it in the recipient\u2019s inbox we see that the styling has come across as an HTML email.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-14006 size-full\" src=\"https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/inbox.webp\" alt=\"\" width=\"830\" height=\"542\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/inbox.webp 830w, https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/inbox-300x196.webp 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/inbox-768x502.webp 768w\" sizes=\"(max-width: 830px) 100vw, 830px\" \/><\/p>\n<p>\u00a0<\/p>\n<div class=\"content\">\n<h2><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-14005 size-full\" src=\"https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/applemail.webp\" alt=\"\" width=\"829\" height=\"599\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/applemail.webp 829w, https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/applemail-300x217.webp 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2023\/06\/applemail-768x555.webp 768w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/h2>\n<h2 class=\"p1\"><span class=\"s1\">Under The Hood<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">To send an email via the Gmail API we first need to create the email form following the RFC822 standard. This multipart form may be familiar to many of you already and looks like the following:<\/span><\/p>\n<pre class=\"\">MIME-Version: 1.0\nFrom: jason@seedcode.com\nTo: jason@seedcode.com\nCc:\nSubject: Testing 123\nIn-Reply-To:\nReferences:\nContent-Type: multipart\/mixed; boundary=01386EE1-2BC5-4670-8AC1-2C05A5CBA90D\n--01386EE1-2BC5-4670-8AC1-2C05A5CBA90D\n\nContent-Type: multipart\/alternative; boundary=5C6478EC-EDEA-43CF-AAC4-4B5AE4BC0649\n\n--5C6478EC-EDEA-43CF-AAC4-4B5AE4BC0649\n\nContent-type: text\/plain; charset=UTF-8\n\nHello World\n\n--5C6478EC-EDEA-43CF-AAC4-4B5AE4BC0649\n\nContent-type: text\/html; charset=UTF-8\n<span style=\"\u201cfont-weight: bold\u201d;\">Hello World<\/span>\n--5C6478EC-EDEA-43CF-AAC4-4B5AE4BC0649-- \n--01386EE1-2BC5-4670-8AC1-2C05A5CBA90D--\n<\/pre>\n<p>In our sample file, the Script &#8220;Create RFC822 Form&#8221; is used to build the above. The RFC822 standard does call out using CRLF (carriage return + line feed) for the line breaks, but I had better luck just using the line feed or Char(10) in FileMaker terms. This allowed for leaving header values like CC blank and a more straightforward template.<\/p>\n<p>Notice that there are two parts to this form that contains the message. The first is the text\/plain section where we pass the plain text from our field. Since this is plain text, all of the formattings we applied is gone. Below, in the text\/html section, we pass in the HTML representation of our message with any appropriate styling. Even though most modern email clients and browsers support reading HTML messages, it\u2019s considered best practice to pass the plaintext message as well.<\/p>\n<p class=\"p1\"><span class=\"s1\">To generate the HTML in our sample file we\u2019re just using FileMaker&#8217;s GetAsCSS() function. This actually works very well for a basic example and translates all of the formatting options except for any fonts applied. If you need a more robust HTML editor then something like <a href=\"https:\/\/s3.amazonaws.com\/tdietrich-opensource\/FMEasyHTML_Beta_01.zip\" target=\"_blank\" rel=\"noopener noreferrer\">FMEasyHTML<\/a> from <a href=\"https:\/\/timdietrich.me\/\" target=\"_blank\" rel=\"noopener noreferrer\">Tim Dietrich<\/a> or <a href=\"https:\/\/www.geistinteractive.com\/2018\/06\/14\/editor-the-rich-text-editor-add-on-for-filemaker\/\" target=\"_blank\" rel=\"noopener noreferrer\">Editor<\/a> by <a href=\"https:\/\/www.geistinteractive.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Geist Interactive<\/a> are worth checking out.<\/span><\/p>\n<h2>The Script &#8220;<span class=\"s1\">Send Email \u2013 Simple&#8221;<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Once we have our form built, then we can POST it to the Gmail API using the Insert From URL script step. The example file does this in the script &#8220;Send Email \u2013 Simple&#8221;. Here&#8217;s what that script does:<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Our target URL is:<\/span><\/p>\n<pre>https:\/\/www.googleapis.com\/upload\/gmail\/v1\/users\/me\/messages\/send?uploadType=media<\/pre>\n<p class=\"p1\"><span class=\"s1\">This is the endpoint for our simple upload example and it supports an email up to 5MB. In the next article, we\u2019ll be looking at a different URL that allows for up to 35MB with multiple attachments.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Now we just need to set a few cURL settings for our headers. (The exaple file writes the access token to a global variable when authentication is complete).<\/span><\/p>\n<pre>-H \"Authorization: Bearer &lt;&lt;$accessToken&gt;&gt;\"\n-H \"Content-Type: message\/rfc822\"<\/pre>\n<p class=\"p1\"><span class=\"s1\">And then specify our request body which is the rfc822 form we created above.<\/span><\/p>\n<pre>-d \"&lt;&lt;$requestBody&gt;&gt;\"<\/pre>\n<p class=\"p1\"><span class=\"s1\">And also capture the result headers to a variable in case we need to examine them for errors.<\/span><\/p>\n<pre>-D \"$resultHeaders\"<\/pre>\n<p class=\"p1\"><span class=\"s1\">That\u2019s it!. This is all done in the script <b>Send Email \u2013 Simple<\/b>so you can step through there to see how it\u2019s put together.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">If there\u2019s an error in the POST, an error code and message will be returned in the response body and headers. Otherwise, you\u2019ll get a simple JSON response like this indicating the email has been sent.<\/span><\/p>\n<pre>{\n  \"id\": \"167180923a6f9ac3\",\n  \"threadId\": \"167180923a6f9ac3\",\n  \"labelIds\": [\n    \"UNREAD\",\n    \"SENT\",\n    \"INBOX\"\n  ]\n}<\/pre>\n<p class=\"p1\"><span class=\"s1\">Our script grabs the id and the <em>thread id<\/em> and writes those to the email record in FileMaker as we\u2019ll be looking at using those in a future example.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">Conclusions<\/span><\/h2>\n<p>Even though there is some extra effort involved in accessing the Gmail API, like authentication, understanding the syntax, and cURL requirements, the benefits provided by the API are well worth it. Having techniques that work across all aspects of the FileMaker platform to extend your app\u2019s email functionality can provide massive value to your customers.<\/p>\n<p>Additionally, as FileMaker developers, our understanding this kind of integration is going to be more and more expected as FileMaker continues to focus on integrating with other platforms. From my experience, every integration I do with a new API makes the next one easier. Even if you don\u2019t have an immediate need for Gmail integration, running through this process and understanding how this API works with something familiar, like email, can only make you a better FileMaker developer.<\/p>\n<p><strong>Here&#8217;s the next article in this series:<\/strong><\/p>\n<p style=\"text-align: center;\"><a href=\"\/filemaker-gmail-email-attachments\/\">Integrating FileMaker and Gmail Part 2 \u2013 Sending Large Attachments<\/a><\/p>\n<\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>This is the first in a series of articles on using the Gmail API from FileMaker. We&#8217;ll provide free example files for each post and these examples will all use the native Insert From URL script step so there won\u2019t be any plug-ins required. In this article, we\u2019re going to look at sending HTML emails. In future articles, I\u2019ll examine sending large emails (35MB) with multiple attachments, resumable uploading, and managing threads. This approach provides a first-rate email experience that is not available using the native Send Mail script step. And, since the Insert From URL script step is supported natively across the whole FileMaker platform, the techniques shown here work on the Server, Go, FileMaker Cloud and WebDirect.\u00a0This technique requires FileMaker 16 or higher since we&#8217;ll be using the advanced cURL options introduced in FileMaker 16. Here&#8217;s an introduction. Step-by-step instructions and an unlocked example file follow: Background and Choosing the Gmail API I recently had the opportunity to build a comprehensive Gmail integration into a client\u2019s system. The main reason the client wanted to go the Gmail route was to have seamless integration with their native Gmail experience; at first they weren&#8217;t that interested in threads or large attachments, but those features soon became important once they started emailing from within FileMaker. Before we started, the client and I discussed which route we wanted to take, like using a plug-in or rolling our own. Fortunately, right about this time, dbservices published a great blog post and example file on integrating with the Gmail API. This article provided great techniques for authenticating to Google as well as creating an inbox in FileMaker that would import Gmails with their attachments. Basically, they had already done a lot of the work we needed. I implemented their authentication and inbox routine and then added the techniques I\u2019m going to share here.<\/p>\n","protected":false},"author":3,"featured_media":11714,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[33,37],"class_list":["post-11689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-filemaker-16","tag-gmail"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode<\/title>\n<meta name=\"description\" content=\"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode\" \/>\n<meta property=\"og:description\" content=\"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\" \/>\n<meta property=\"og:site_name\" content=\"SeedCode\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/seedcoder\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-18T20:09:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-13T22:34:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png\" \/>\n\t<meta property=\"og:image:width\" content=\"319\" \/>\n\t<meta property=\"og:image:height\" content=\"325\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jasonchryoung\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dayback\" \/>\n<meta name=\"twitter:site\" content=\"@dayback\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jasonchryoung\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\"},\"author\":{\"name\":\"jasonchryoung\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\"},\"headline\":\"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails\",\"datePublished\":\"2018-11-18T20:09:07+00:00\",\"dateModified\":\"2023-06-13T22:34:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\"},\"wordCount\":1460,\"commentCount\":37,\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png\",\"keywords\":[\"FileMaker 16\",\"Gmail\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\",\"url\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\",\"name\":\"Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png\",\"datePublished\":\"2018-11-18T20:09:07+00:00\",\"dateModified\":\"2023-06-13T22:34:06+00:00\",\"description\":\"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.\",\"breadcrumb\":{\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png\",\"width\":319,\"height\":325,\"caption\":\"Integrate FileMaker Gmail\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/seedcode.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/seedcode.com\/#website\",\"url\":\"https:\/\/seedcode.com\/\",\"name\":\"SeedCode\",\"description\":\"Build the Software You&#039;ve Always Wanted\",\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/seedcode.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/seedcode.com\/#organization\",\"name\":\"SeedCode\",\"url\":\"https:\/\/seedcode.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"width\":595,\"height\":189,\"caption\":\"SeedCode\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/seedcoder\",\"https:\/\/x.com\/dayback\",\"https:\/\/www.linkedin.com\/company\/seedcode\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\",\"name\":\"jasonchryoung\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"jasonchryoung\"},\"url\":\"https:\/\/seedcode.com\/author\/jasonchryoung\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode","description":"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/","og_locale":"en_US","og_type":"article","og_title":"Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode","og_description":"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.","og_url":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/","og_site_name":"SeedCode","article_publisher":"https:\/\/www.facebook.com\/seedcoder","article_published_time":"2018-11-18T20:09:07+00:00","article_modified_time":"2023-06-13T22:34:06+00:00","og_image":[{"width":319,"height":325,"url":"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png","type":"image\/png"}],"author":"jasonchryoung","twitter_card":"summary_large_image","twitter_creator":"@dayback","twitter_site":"@dayback","twitter_misc":{"Written by":"jasonchryoung","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#article","isPartOf":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/"},"author":{"name":"jasonchryoung","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd"},"headline":"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails","datePublished":"2018-11-18T20:09:07+00:00","dateModified":"2023-06-13T22:34:06+00:00","mainEntityOfPage":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/"},"wordCount":1460,"commentCount":37,"publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"image":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png","keywords":["FileMaker 16","Gmail"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/seedcode.com\/html-email-filemaker-gmail\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/","url":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/","name":"Integrating FileMaker and Gmail - Part 1 Sending Mail - SeedCode","isPartOf":{"@id":"https:\/\/seedcode.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage"},"image":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png","datePublished":"2018-11-18T20:09:07+00:00","dateModified":"2023-06-13T22:34:06+00:00","description":"Send HTML emails from FileMaker using the Gmail API without plugins. Example file and step-by-step instructions show you how. Techniques work across the whole FileMaker platform including Cloud, Go, and WebDirect.","breadcrumb":{"@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seedcode.com\/html-email-filemaker-gmail\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#primaryimage","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2018\/11\/gmailfav.png","width":319,"height":325,"caption":"Integrate FileMaker Gmail"},{"@type":"BreadcrumbList","@id":"https:\/\/seedcode.com\/html-email-filemaker-gmail\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/seedcode.com\/"},{"@type":"ListItem","position":2,"name":"Integrating FileMaker and Gmail Part 1 \u2013 Sending HTML Emails"}]},{"@type":"WebSite","@id":"https:\/\/seedcode.com\/#website","url":"https:\/\/seedcode.com\/","name":"SeedCode","description":"Build the Software You&#039;ve Always Wanted","publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seedcode.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/seedcode.com\/#organization","name":"SeedCode","url":"https:\/\/seedcode.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","width":595,"height":189,"caption":"SeedCode"},"image":{"@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/seedcoder","https:\/\/x.com\/dayback","https:\/\/www.linkedin.com\/company\/seedcode\/"]},{"@type":"Person","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd","name":"jasonchryoung","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"jasonchryoung"},"url":"https:\/\/seedcode.com\/author\/jasonchryoung\/"}]}},"_links":{"self":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/11689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/comments?post=11689"}],"version-history":[{"count":0,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/11689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media\/11714"}],"wp:attachment":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media?parent=11689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/categories?post=11689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/tags?post=11689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}