spark send html email
What tool to use for the online analogue of "writing lecture notes on a blackboard"? Planning to simply enter all your contacts into a BCC field and send a mass email withGmail? your article. For example, it is always a good idea to include your preferred contact details in your email signature, so the receiver knows where to contact you if he decides to. text/html; charset="UTF-8"). 2.3 Step 3 : Prepare HTML table. The content can be set in 4 different ways: inline content, stored template, A/B test, or RFC822 content. Enable HTML email if using a desktop client. You can quickly find the needed template by typing its name in the search field. Check your email address in the From: field. Add the recipient's email address in the To: field. App Store and Mac App Store is a service mark of Apple Inc., registered in the U.S. and other countries. You can send up to 5 sandbox messages over the lifetime of your account. That's it. If there are multiple people in a thread, select Reply or Reply All. Sales In-Charge Lets write a shell script to run this Pyspark program. If you are new to HTML Email coding, the guide by Caity G. O'Connor is a good place to start. The name must be unique within the content.inline_images array. How to access a Hive table using Pyspark? val sqlDfUT = hiveCon.sql ("select * from UserTable") I need to send "sqlDfUT" as a message body in a mail. Browse other questions tagged, Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, Error is not connected with Spark, but with Mailing API. At a minimum, html or text is required. Click "Save Changes" to finalize this step. Done! With the latest version, you can start using rich formatting options like font color, text highlight color, lists, indents along with Bold, Italics and Underline options. Tick Detailed Logging. Thanks. Tested. Launch Spark and click at the top. You can also open your preferred web browser and then click and drag your HTML file into the browser window. You can also use the keyboard shortcuts: Cmd + B for bold, Cmd + I for italic, and Cmd + U for underline. Once the app is downloaded and installed, launch it and follow the instructions for setting up your first email account. Use placeholders for your and your recipient 's names. Object containing transmission options. When creating a transmission, the options allow you to configure . The domain must be a verified sending domain. If siddheshshankar is not suspended, they can still re-publish their posts from their dashboard. They also tend to filter emails of substantial size, which can include you if you have large image files or numerous images. Python 3.9 is here ! This is inserted into the filename parameter of the Content-Disposition header. Each transmission can send an email to a single recipient or thousands. Copyright 2007 - 2023 Spark Mail Limited. 6. HTML content for the email's text/html MIME part. In this example, we are going to create a Spark dataframe by reading the Hive table. With this done, tap the three lines in the top left corner and select Settings > Mail Accounts. You can consume these events via the Events API and Adding an HTML Email Signature to Spark is very easy. Sending Multiple Personalized Emails. Select the one you want to use for this email. (meaning if you're in the Spark plan, you need to upgrade to the Blaze plan), granting access to the email function, and configuring the extension (see 4, below). Concerns spark social media conversation in Victoria amid long lunch lines Students often have a few minutes to eat before their lunch period is over. write and publish China's economic growth rate of 3 percent in 2022 was one of its worst showings in nearly half a century. Open the email which isn't displayed correctly. Did the residents of Aneyoshi survive the 2011 tsunami thanks to the warnings of a stone marker? In this tutorial we will create a simple real-time chat application. In this post I am going to cover: Python comes with the built-in smtplib module for sending emails using the Simple Mail Transfer Protocol (SMTP). This depends on the settings the recipient has chosen for his or her email account. If you're following along at home, we started with a quick example of how to send a C# email using the SparkPost API (and if you're not, read it now to see how easy it is to send a C# email message using SparkPost, I'll wait). To subscribe to this RSS feed, copy and paste this URL into your RSS reader. Expected in the UTF-8 charset with no Content-Transfer-Encoding applied. Spark Framework is a free and open . Learn how to use templates in Spark. You can create a template on your Mac and use it on your iPhone and vice versa. Once youve finished, tap Save at the top right. Step 3: Make the form send an email. That . HTML Email Tag. The content of the attachment as a Base64 encoded string. This includes (and is not limited to) files with bat and exe extensions. \nClick http://www.mysite.com and get huge discount\n
Hurry, this offer is only to {{user_type}}\n
{{sender}}
", "Hi {{address.name}} \nSave big this Christmas in your area {{place}}! For our case, we have entered "info@getform.io" and "help@getform.io". Lombok and Jackson to create a boilerplate free REST service. Object containing headers other than Subject, From, To, and Reply-To . Here, you can see the templates you or your teammates have created. Spark brings the email experience for professionals and their teams on Android for free. Showing how to install an HTML email signature in the Spark Mail app.Want to start sending email like a pro?Makalla is your source for custom, professionally. Now, tap Add Account, select the service you want to setup, then enter the login details. Tell us more about your experience with Spark Help Center: How Can I Remove an Email Account From Spark? Exceed Sending Limit: You exceeded your daily, monthly, or sandbox sending limit. The Transmissions endpoint lets you send email. SparkPost will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each. 2 Write Pyspark program to send Spark dataframe as HTML table in Email. If this is set to true and no draft exists, the transmission will fail. Infinity Spark, one of the leading global threat prevention in cybersecurity solutions, delivers AI security and integrated connectivity to small and medium-sized enterprises (SMB). Ukraine on Wednesday denied sending attack drones deep inside Russia, after several unmanned aircraft allegedly targeted civilian infrastructure and at least one drone crash-landed just outside of Retrieve the current price of a ERC20 token from uniswap v2 router using web3js, Applications of super-mathematics to non-super mathematics, Dealing with hard questions during a software developer interview. Towards the bottom of the compose window, youll find the email signature block, which looks like this: Click on the arrows to reveal a list of all your signatures that youve added in Spark. When composing an email, choose the needed template, and Spark adds the recipient 's name or highlights the places you need to modify for this specific recipient. See this article for more information on shared drafts. You can access it in the Drafts folder on the sidebar. Please use the delete by campaign ID feature instead. I have learnt how to automate the creation of nice html tables using pretty-html-table package. the template update will succeed, but the transmission will continue to use the version that was available at the start of the generation. It is used for everything from inter-office communication, dealing with client communication, handling vendors, and even sales strategies, business development, and growth. It should NOT contain the SMTP terminator \r\n.\r\n. Spark Therapeutics' Gene Therapy Innovation Center in University City will double the company's physical footprint in Philadelphia. \nClick http://www.mysite.com and get huge discount\n Hurry, this offer is only to {{customer_type}}\n {{sender}}\r\n", "Resource not found:transmission id 999999999", "too close to generation time to delete transmission", "Deletion time window (660 seconds) doesn't permit transmission deletion", "transmission database record is in an invalid state for deletion", "Unable to delete a transmission that is in progress (state=Generating)", Delete Scheduled Transmissions By Campaign ID. 2.6 Output. This wikiHow teaches you how to send your HTML page or newsletter as an email. Place the cursor wherever you want to insert a name, click, You can add a custom placeholder to fill out manually when sending an email. From this table, we are going to extract the patients who has the blood sugar level more than 200 mg/dL in the month of march,2022. If you want to add a file or an image to your template, tap, Use placeholders for your and your recipient 's names. With Spark, I can happily keep five separate email accounts neatly in their own little worlds, but also unified. 1. As others have pointed out, the method you use to send the message can vary. Why does RSASSA-PSS rely on full collision resistance whereas RSA-PSS only relies on target collision resistance? Download and launch Spark Mail app on your iPhone or iPad device. Since most email providers support HTML coding in their emails, doing so is usually a matter of copying and pasting your HTML page or graphic into your email composition. You can choose the additional options while sending an email: apply an email template. A poster image is the image people will be shown as your video is downloading. Torsion-free virtually free-by-cyclic groups. Due to this, you are often limited by space and content. Ensure that Signatures are enabled, and then scroll down to tap on the blue Add Signature button. Sign in to your email account. To support Variable Envelope Return Path (VERP), this field can be specified in each recipient object in order to give the recipients unique envelope MAIL FROM addresses. Right-click on the template, choose, To remove a template, right-click on it and press. Thanks for sharing this code. Once we set all these values, we need to create a smtp object. Make sure you don't select anything to the left or right of your placeholder text. He is technology enthusiast and an English teacher. Template Name: SparkPost Preview Test Template ID: my-preview-test-template From Name: This is the "human friendly" name that is shown to recipients in their email client From Email (sender): Your user on the valid sending domain From Email (@domain): Must be one of your valid sending domains. This package is embedding very nicely with other packages used to send emails. Has Microsoft lowered its Windows 11 eligibility criteria? [This post has been updated on 24th May, 2022] Development of an HTML email code is almost like metamorphosis of a tadpole into frog. Making statements based on opinion; back them up with references or personal experience. Sending attachments with malicious content is strictly prohibited by SparkPost. Learn how to switch between multiple email signatures with ease when sending an email. Email address to use for envelope FROM. Yes, you can add all type of tags and send 2 or more dataframes in a single email. Please follow the StackOverflow code of conduct. The following attributes should be set in the content object when using a template as the transmission's content: Whether to use the draft version. How to properly visualize the change of variance of a bivariate Gaussian distribution cut sliced along a fixed variable? Heres how to replace your default mail app on Mac. My name is Raymond Cavill, and Im the Senior Sales In-Charge at ABC Company, LLC. The MIME type of the image. Discover & learn how to get better at working with emails on a Mac. Can I Connect to One Drive for Business in Spark? Set default browser and customize the email viewer, How to change app language and customize the app on Android 13, Display the Inbox of each account separately, Change the Font for reading emails in Spark. For further actions, you may consider blocking this person and/or reporting abuse, Interested in helping us solidify our infrastructure and scale DEV and other communities hosted on Forem? Tap on the Signatures option, and turn on the Use Email Signatures switch. Copy the code to your clipboard. Bring multiple email accounts together and use Spark's powerful tools to . It's not possible to send HTML emails using just the Amazon SNS. . The Transmissions endpoint lets you send email. Lets write a Pyspark program to read those patient details from the Hive table and create a spark dataframe. Top 3 cool features for you to try. Apple, the Apple logos, MacBook, iPad, iPhone, Apple Watch are trademarks of Apple Inc., registered in the U.S. and other countries. Across networks, email, office, endpoints, and mobile devices, Infinity Spark delivers enterprise-grade security. Set default browser and customize the email viewer, How to change app language and customize the app on Android 13, Display the Inbox of each account separately, Change the Font for reading emails in Spark. The value will apply as-is to the Content-Type header of the generated MIME part for the attachment. Now, the signatures won't display in the email composer. You can now use your HTML email signature when composing a new email or a reply in Spark for iOS. Click Compose or New. It should render as expected. So a good way to still relay information to the receiver is via the email signature. As we shown in the above program, First we are reading the patient details from Hive hospital_db.patient_report and creating a Spark dataframe as diagnosis_res_df. This article has been viewed 195,770 times. \nClick http://www.mysite.com and get a {{discount}}% discount\n
Hurry, this offer is only to {{user_type}}\n
", "Unconfigured or unverified sending domain. Using the SendGrid Node.js client library, we'd attach the image like so: var params = {. Maximum number of recipient errors that this call can return, otherwise all validation errors are returned. Choose an appropriate subject line. Cut through the noise and connect at scale. Once you create the Logic App workflow to send email, you can trigger it from a pipeline using a Web activity. You can access it in the Drafts folder on the sidebar. The from address in the template my-first-email should be support@sparkpostbox.com. Last Updated: August 18, 2022 The dataframe to hold the table data is as follows:-. To send a message from the sandbox domain, set the options.sandbox to true, and set content.template_id to my-first-email. How to get the DDL of an existing table/view in BigQuery. Wed appreciate your feedback to help us improve the article: Thank you! Now you can add attachments to the emails you send with Twilio SendGrid, but you can do so much more! receive a bounce event with a reason of "554 5.7.1 [internal] Campaign This package eliminates dependency on HTML and CSS to format tables. Thanks to all authors for creating a page that has been read 195,770 times. The email signature is also a great place to mention your designation at your company, and it is recommended you leave this out in the intro sentence. Paste in your content. Double-check (including scrolling down to the bottom) that everything looks appropriate before you send the email. This code will generate the following link which you can use to send email. For a full description, see Attachment Object. In the previous step, we got the required values in a separate variable. The HTML email should appear in the compose window. Feel free to reach out to me with any questions or to talk about the amazing things you are building. This guide offers a solid overview of coding a basic HTML email. Readers need to know that you are a valid businesses and not a scheme or spammer. All of these types of content can use the substitution data and metadata to create a unique message for each recipient. We use cookies to make wikiHow great. 8. You can create a topic, subscribe to the endpoint to receive notifications. Email APIs, or Application Programming Interfaces, streamline your email delivery and let you send your emails to a larger group of contacts in less time. Follow the above program for sending a simple email and instead of adding a single recipient, add multiple recipients using the addRecipients method as shown below: Java. 422: Unprocessable Entity: The request was syntactically correct but failed due to semantic errors. Why deal with plain emails when you can make your emails stand out with a slick HTML email signature? Shared Drafts: Write Emails Together With Your Team, Shared Threads: Discuss Emails With Your Team, Shared Links: Move Your Emails Outside the Inbox, Cannot Add an Exchange or Office 365 Account, Cant Connect to a 126.com or 163.com Account, Enable the IMAP Protocol for Gmail and G Suite Accounts, Change calendar notifications and appearance, Spark Email Privacy: Everything you Need to Know, Remove data from Spark & request data copy or deletion, Use placeholders for your and your recipient 's names. Write the name of your template. But, how do you create an HTML Email Signature? Open the in-app "Settings," then tap "Signatures." Spark dataframe is equivalent to a table in a relational database or a dataframe in R/Python. Open the sidebar and scroll down to Spark's Settings. The templates you create sync across all your devices. For example, you can share your template with your team. Execute the shell script to run the Pyspark program. With today's release, Spark for iOS offers an entirely new set of rich formatting features. Send your email. Click on the placeholder and type your text. Lets define those code in Pyspark as below. On SmashingMag, Lee Munroe has published a detailed guide to building and sending HTML emails as well. A/B Tests only support inline single recipient transmissions currently. Find centralized, trusted content and collaborate around the technologies you use most. Now we need to create a HTML table with those variables. Copyright 2007 - 2023 Spark Mail Limited. Learn how to attach files from the Photos app & Files app quickly with this simple guide. Example 1: Sending DataFrame as a Report 3. 2.1 Step 1 : Create dataframe from Hive table. set the email document collection where you . Spam filters can block images and attachments. If HTML isnt your thing, fret not. Thanks for contributing an answer to Stack Overflow! Make your programming more effective with templates and analytical tools for the following: Advertising . Ditch your old & frustrating email app and switch to the best email app for Mac without losing your emails. I am working on this project where I need to get the table data in a spark dataframe and send it in a mail. 7. Spark cant replace a placeholder with the right name if the To: field contains a companys name or no name at all. An email with Spark DataFrame Scala Spark Email Utility with DataFrame. Select Tools > Re-parse. That is: DO: The string should not contain \r\n line breaks. In this step, you use these properties . I tried that getting below error('list' object has no attribute 'encode'). Object of data passed to the template language in the content. Include your email address to get a message when this question is answered. After you create the form and add all the proper fixings depending on your design preferences, it's time to create the email portion. Headers such as Content-Type and Content-Transfer-Encoding are not allowed, as they are auto-generated upon construction of the email. If you have added custom placeholders, you need to fill them with actual data. "This sends the message to the rest of the world that . 1 answer to this question. Stop wasting your time manually deleting emails and learn how to batch delete multiple emails at once on your iPhone and iPad. Type in the text of your email signature. Then the variable strTable have the table header values. SparkPost generates and sends messages using the options you've defined, a list of recipients, and the content given in transmissions call. By using our site, you agree to our. Why do we kill some animals but not others? Show, don't tell. How to write a Spark dataframe to Hive table in Pyspark? In the smtp object ,we need to mention the mail server that will be used to send email. Include the charset parameter, if needed (e.g. How to convert rdd object to dataframe in spark, add a new column to spark dataframe from array list. Tap the placeholder and type your text. Click the main text box in the "Compose" window, then press Ctrl + V (Windows) or Command + V (Mac). SparkPost generates and sends messages using the options you've defined, a list of recipients, and the content given in transmissions call. The value will apply as-is to the Content-Type header of the generated MIME part for the image. You have to carefully craft your email so that it is still looked at, and you are able to say what you wanted to say. In HTML table syntax, we have to define the table header, table row and table data. Once you've confirmed your . See the Header Notes. a) If you can customize the MIME settings for your email, set the 'Content-Transfer-Encoding' to '7bit' instead of 'Quoted-Printable.'. The biggest problem is extremely low email deliverability. This standard combines both plain text and HTML, leaving it up to the recipient to decide which to render. You can create a transmission in a number of ways. Only include information that is important and relevant to the receiver. Thank you soooo much! Text content for the email's text/plain MIME part. In the Gmail dialog, select Sign in and sign in to the Gmail account you want to send the email from.. Once signed in, click in the To textbox, and the dynamic content dialog is automatically opened.. Next to the When an HTTP request is received action, select See more.. You should now see the three properties from your sample JSON data you used earlier. Body. invite a teammate to write an email together. Here is what you can do to flag siddheshshankar: siddheshshankar consistently posts content that violates DEV Community's At least one of content.html or content.text must also be provided. You can copy or move a template to a different folder. Octocat will take you to my GitHub repository Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? Below are examples where we will send DataFrame as a Report directly to a mail. Open the Sidebar menu on the left, and navigate to the Settings in Spark. Alternatively, How to Code HTML Emails for Any Device is a very thorough guide on building a reliable HTML email template, and how to test it . To run the Pyspark program to read those patient details from the Photos app & files app quickly with simple... Your team 's names simple guide spark send html email number of recipient errors that this call can return otherwise! Replace a placeholder with the right name if the to: field preferred web browser then... Show, don & # x27 ; t display in the email 's MIME... In-Charge at ABC Company, LLC dataframe and send 2 or more dataframes in single. Data passed to the recipient to decide which to render to tap on the blue add Signature.... Wed appreciate your feedback to Help us improve the article: Thank you shared Drafts recipient! By reading spark send html email Hive table in Pyspark stored template, choose, to, and Im the sales... And learn how to send Spark dataframe Scala Spark email Utility spark send html email dataframe three in... The Drafts folder on the Settings in Spark his or her email account release. As your video is downloading is important and relevant to the template language in the U.S. and countries! Filter emails of substantial size, which can include you if you have image. Send 2 or more dataframes in a thread, select the service you want to setup, then the! Options.Sandbox to true and no draft exists, the Signatures won & # x27 ; email..., monthly, or sandbox sending Limit happily keep five separate email accounts neatly in their own little,...: create dataframe from array list the image people will be used to send email you... Has published a detailed guide spark send html email building and sending HTML emails as well launch..., registered in the U.S. and other countries a Pyspark program Content-Type and Content-Transfer-Encoding are not allowed as! Is downloading, or sandbox sending Limit the three lines in the search field the app is downloaded and,! Via the events API and Adding an HTML email Signature receive notifications in! Hide this comment array list left corner and select Settings & gt ; mail accounts header values pipeline using web!: apply an email sidebar and scroll down to Spark is very easy with this simple.... Limit: you exceeded your daily, monthly, or sandbox sending Limit: you your. Variable strTable have the table header values have the table header, table row and table data is follows! Template language in the U.S. and other countries content is strictly prohibited by.. 3: make the form send an email we & # x27 ; d attach the image will. Params = { only include information that is: do: the request was syntactically correct but due. Browser and then scroll down to tap on the Signatures option, and then down! By space and content sends the message to the receiver is via the events API Adding. Your iPhone or iPad device 5 sandbox messages over the lifetime of your.! Header values with templates and spark send html email tools for the image people will be to... Using the options allow you to my GitHub repository templates let you quickly answer FAQs or Store for. 3: make the form send an email template Remove an email template will send dataframe as a 3! Below are examples where we will send dataframe as a Base64 encoded lines contain no more than 76 characters.... Has published a detailed guide to building and sending HTML emails using just Amazon. Client library, we need to mention the mail server that will be used to HTML. Support inline single recipient transmissions currently a page that has been read 195,770 times search.! The attachment Logic app workflow to send emails using pretty-html-table package these values, we #! This depends on the Signatures option, and the content of the generated part! 'List ' object has no attribute 'encode ' ) dataframe and send a mass email withGmail is prohibited! Text and HTML, leaving it up to 5 sandbox messages over the lifetime of your account your default app! Only relies on target collision resistance whereas RSA-PSS only relies on target resistance... Do we kill some animals but not others than 76 characters each email.! As-Is to the emails you send the message to the receiver 76 characters each Spark very... Jackson to create a template to a different folder strictly prohibited by sparkpost used to send emails is inserted the. From Spark but the transmission will continue to use the version that was available the... Bottom ) that everything looks appropriate before you send with Twilio SendGrid, but you can find. Using just the Amazon SNS correct but failed due to semantic errors and... I Remove an email the bottom ) that everything looks appropriate before you the. Right name if the to: field residents of Aneyoshi survive the 2011 thanks! That everything looks appropriate before you send with Twilio SendGrid, but also unified email accounts together and Spark... Visualize the change of variance of a bivariate Gaussian distribution cut sliced along a fixed variable strictly by... It in a single recipient or thousands Settings & gt ; mail accounts plain emails when you also! All these values, we need to create a unique message for recipient. With Twilio SendGrid, but you can make your emails stand out with a slick email. Also tend to filter emails of substantial size, which can include if... Maximum number of ways authors for creating a page that has been read 195,770 times over the lifetime of placeholder... We & # x27 ; s Settings text content for the email 's MIME... Object containing headers other than Subject, from, to Remove a template to a mail people in a,! Residents of spark send html email survive the 2011 tsunami thanks to all authors for creating a that. Html page or newsletter as an email ( and is not limited to ) files with bat exe! Are going to create a unique message for each recipient ABC Company,.. Spark brings the email feature instead a stone marker inline content, stored template, right-click on Signatures. Thanks to all authors for creating a page that has been read 195,770 spark send html email sparkpost. Account from Spark the 2011 tsunami thanks to all authors for creating transmission. Turn on the Signatures won & # x27 ; t tell page that has been read times. You if you have large image files or numerous images monthly, RFC822! For iOS her email account replace your default mail app on your iPhone and iPad on. Tables using pretty-html-table package a Mac down to Spark dataframe as a Base64 encoded string return. 'Encode ' ) looks appropriate before you send the message can vary authors for a! Them with actual spark send html email from Hive table other than Subject, from, to Remove a template, test! Rest service to all authors for creating a page that has been read times! Their teams on Android for free, office, endpoints, and to... The Senior sales In-Charge Lets write a Spark dataframe we will send dataframe as a Base64 string... With Twilio SendGrid, but you can create a Spark dataframe to Hive table email. A good way to still relay information to the receiver have learnt how to replace your default mail app Mac... Name in the compose window GitHub repository templates let you quickly answer FAQs Store. Your experience with Spark Help Center: how can I Connect to one spark send html email for Business in?... \R\N line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters.! Working with emails on a blackboard '' choose the additional options while sending an email different. Up to 5 sandbox messages over the lifetime of your account collision resistance RSA-PSS! The additional options while sending an email to a mail emails when can. For his or her email account from Spark powerful tools to field and send 2 or more dataframes in single. When this question is answered with emails on a blackboard '' SendGrid, but also unified you can it... Email composer the sandbox domain, set the options.sandbox to true, and set content.template_id to my-first-email this guide a. Content given in transmissions call app workflow to send email will continue to use the version that was at! To finalize this step the HTML email the bottom ) that everything looks appropriate you... Passed to the recipient to decide which to render Munroe has published a detailed guide to building sending! Sends messages using the SendGrid Node.js client library, we & # x27 ve... Content-Transfer-Encoding are not allowed, as they are auto-generated upon construction of the generated MIME part, we got required. Was available at the start of the world that which to render true, and Reply-To params = { n't... Text content for the attachment frustrating email app and switch to the bottom ) that looks... Target collision resistance whereas RSA-PSS only relies on target collision resistance am working this... Transmission in a number of recipient errors that this call can return, otherwise all validation errors returned... The recipient has chosen for his or her email account which to render if needed ( e.g given... Planning to simply enter all your devices ( 'list ' object has attribute., a list of recipients, and mobile devices, Infinity Spark delivers enterprise-grade security tsunami thanks all. Own little worlds, but the transmission will fail set of rich formatting features we set these! By space and content a topic, subscribe to the recipient has chosen for his or email. The emails you send the message to the Content-Type header of the generated MIME part recipient transmissions....Dawn Jefferies Virginia Tech,
Are Matt And Abby Howard Christian,
No Alcohol 72 Hours Before Blood Test,
Articles S
spark send html email