See the App Inventor Extensions document about how to use an App Inventor Extension.
For questions about this extension or bug reports please start a new thread in the App Inventor Extensions forum. Thank you.
For feature requests please contact me by email. To be a sponsor of a new method already is possible starting from only 10 USD! With your contribution you will help the complete App Inventor community. Thank you.
July 10th, 2016: Version 1 of the Mail Extension released (POP3 blocks are still experimental!)
Aug 11th, 2016: Version 1a: avoid DX execution failed error: build each extension separately
Dec 30th, 2016: Version 1b: simplification in send method, which fixes SSL issue, Base64Decode method added
Feb 14th, 2017: Version 1c: added permission android.permission.ACCESS_NETWORK_STATE to be able to send attachments via mobile internet
This extension enables you to send an email via SMTP. You can send to several To, Cc or Bcc addresses, add several attachments and
send in plain text or HTML format. Note: SMTP authentication is set to true.
To use this extension together with Gmail accounts, you have to enable less secure apps in the Google settings, see also Why do I get AuthenticationFailedException when accessing Gmail?.
Required permissions: android.permission.INTERNET, android.permission.READ_EXTERNAL_STORAGE, android.permission.WRITE_EXTERNAL_STORAGE, android.permission.ACCESS_NETWORK_STATE
Probably you want to read this first: What is SMTP?
This extension uses the Javamail API version 1.5.5. Thank you Oracle!
Note: There are also blocks available to receive emails via POP3, but these are still experimental... What is POP3?
Returns from (i.e. the email address of the sender of a message).
Specifies from (i.e. the email address of the sender of a message).
Returns SMTP host.
Specifies SMTP host. Default value is smtp.gmail.com.
Returns SMTP port.
Specifies SMTP port. Default value is 465.
Returns whether text should be sent in HTML format.
Specifies whether text should be sent in HTML format. Default value is false.
Subject and To address are mandatory. For To, Cc and Bcc you can add several addresses, use a comma as delimiter. Also you can add several attachments, use a comma as delimiter. You can't send attachments from the assets of the app.
Event indicating that email has been sent.
In case of success, the flag successful is true and the text "success" will be provided as response. In case of failure, the flag successful is false and an error message will be provided as response.
Enter your settings and send emails to several To, Cc or Bcc addresses, add several attachments and
send in plain text or HTML format to test the functionality of the Mail extension.
Q1: When I tried the .apk it gives as response javax.mail.AuthenticationFailedException 534-5.7.14?
A: To use this extension together with Gmail accounts, you have to enable less secure apps in the Google settings, see also Why do I get AuthenticationFailedException when accessing Gmail?.
Q2: Would you be able to assist me with the file location needed to send a different file in my test I am using ///storage/emulated/0/Folder/File.txt?
A: You can use a full path, which is file:///mnt/sdcard/Folder/File.txt or a relative path, which is /Folder/File.txt.
Q3: I have tried Mail Extension SMTP, it works with GMail, then I tried with another SMTP account (not GMail) and I received the following error message: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
A: It seems to be, your server is not correctly configured, see also this stackoverflow answer. Please contact your server administrator.
Q4: I have tried Mail Extension SMTP, it works with GMail, then I tried with another SMTP account (not GMail) and I received the following error message: javax.net.ssl.SSLHandshakeException: Handshake failed. We do not use any security settings. Can I disable SSL auth so I can use my SMTP server?
A: Please configure your server accordingly and use SSL, insecure methods are not supported by the extension.
Q5: You said that: you can add several attachments, use a comma as delimiter. You can't send attachments from the assets of the app. What do you mean exactly with "the assets of the app"?
A: Assets are all files, you uploaded as media into your project. To send a file from the assets, you first have to copy it to the internal sdcard and send it from there. To copy a file from the assets to the internal sdcard please use the file extension and its Copy method.
Q6: I'm using a Gmail account to send emails and some user get an error message and the message will not be sent?
A: The restrictive security mechanisms of the Google account might prevent sending the emails. For each access to the Gmail account Google is checking the location of the user and tries to find out, if it's you who is sending the email. It might be, that Google is assuming, that someone else found out your password and therefore refrains from sending the email. You might want to use an email provider with less restrictive security settings....
There are also blocks available to receive emails via POP3, but these are still experimental...
Returns POP3 host.
Specifies POP3 host. Default value is pop.gmail.com.
Returns POP3 port.
Specifies POP3 port. Default value is 995.
Returns the max. number of messages to check or fetch.
Specifies the max. number of messages to check or fetch. Default value is 10.
Returns directory to save attachments after fetching emails.
Specifies directory to save attachments after fetching emails. Default value is AI.
Check emails, i.e. to find out, if there are new emails available.
Only the following information is downloaded for each email: number, from address, subject and sentDate.
Fetch emails, i.e. to download available emails to your device.
Decode a base64 encoded string, which can be found in an email address. The string must start with =?UTF-8?B? and must end with ?=. Example: =?UTF-8?B?2KPYs9in2YXZhyDYs9mK2KfYsQ==?=
Decode a quoted-printable string, which can be found in an email address.
Example: =?utf-8?Q?Taifun_B=C3=A4r?= will be coverted to Taifun Bär.
Event indicating the progress of the checking process.
As it takes a few seconds to download the information depending on the number of emails to check, you can follow the progress of the checking process here.
Event indicating that emails have been checked.
If Check was successful, the flag 'successful' is true, 'number' will be the number of available messages and the following information will be provided in the 'response' in JSON format for each message: number, from, subject, sentDate.
Event indicating the progress of the fetching process.
As it takes a few seconds to download the information depending on the number of emails to fetch, you can follow the progress of the fetching process here.
Event indicating that emails have been fetched.
If Fetch was successful, the flag 'successful' is true and the following information will be provided in the 'response' in JSON format for each message: from, to, cc, subject, sentDate, contentType, content, attachments. To keep it simple, only the first To and Cc address will be provided (in case there is one). You can set the directory for the attachments to be stored in the property 'SaveDirectory'.
Enter your settings and check for available emails or fetch emails to test the functionality of the Mail extension.
A message including inline images
A message including an attachment
Note: Inline Images will be downloaded and stored in the folder defined in the SaveDirectory property, which is by default directory AI. The content of the email will be adjusted accordingly by the Mail extension to link to the inline images from that directory. The example app uses the webviewer to display the message. The HTML code will be passed in the Webviewstring property of the Webviewer.
The SMTP test app is available in Google Play for Beta testers. You can test the example following these steps
Note: The POP3 blocks are still experimental!
You can buy this extension (aix file).
With your payment you accept the terms and conditions below.
Please transfer 10 USD via Paypal
to Pura Vida Apps
After having received your payment I will be happy to send the download link to you. Please let me know your Google account!
I usually will send the download link not later than 24 hours after having received your payment.
Thank you! Taifun