I understand that this is an old question, but I also had the same problem, and I figured out how to solve the problem, so I decided to share it.
The problem is that (I believe) you are calling the code below from your popup page.
chrome.tabs.create({ url: emailUrl }, function(tab) { setTimeout(function() { chrome.tabs.remove(tab.id); }, 500); });
The problem is that as soon as a new tab is created, the popup page dies and the callback code never executes.
We can fix this by moving this code to a function on a background page whose life time is not tied to a popup page:
function sendEmail() { var emailUrl = "mailto: blah@blah.com "; chrome.tabs.create({ url: emailUrl }, function(tab) { setTimeout(function() { chrome.tabs.remove(tab.id); }, 500); }); }
and calling it through chrome.extension.getBackgroundPage().sendEmail() from its popup page.
Using the above method, the email client will be opened by default, and the new tab will be automatically closed after 500 milliseconds.
source share