Search code examples
google-chrome-extensionmailto

How to open a mailto link with a click on a Chrome extension icon?


With the following code I try to open a mailto: link in a tab if the user clicks on the Chrome extension icon. However, upon click on the icon, no action is being performed.

manifest.json

{
  "manifest_version": 2,

  "name": "Extension",
  "description": "Description",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [
    "tabs"
  ]
}

popup.js

chrome.browserAction.onClicked.addListener(function tab) {
  var emailUrl = "mailto:address@domain.com";
  chrome.tabs.create({ url: emailUrl });
};

Solution

  • There are multible issues with your code:

    1. You never require you popup.js.
    2. You JavaScript code is invalid.

    I recommend using an eventPage to trigger the E-Mail link:

    manifest.json

    {
      "manifest_version": 2,
      "name": "Extension",
      "description": "Description",
      "version": "1.0",
      "browser_action": {
        "default_icon": "icon.png"
      },
      "background": {
        "scripts": ["eventPage.js"],
        "persistent": false
      }
    }
    

    eventPage.js

    chrome.browserAction.onClicked.addListener(tab => {
      chrome.tabs.create({ url: 'mailto:address@domain.com' })
    })