home-assistant.github.io/components/notify.smtp/index.html
2017-06-17 20:00:42 +00:00

386 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>SMTP - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Instructions how to add e-mail notifications to Home Assistant.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/components/notify.smtp/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="SMTP">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/components/notify.smtp/">
<meta property="og:type" content="article">
<meta property="og:description" content="Instructions how to add e-mail notifications to Home Assistant.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="SMTP">
<meta name="twitter:description" content="Instructions how to add e-mail notifications to Home Assistant.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href="/getting-started/">Getting started</a></li>
<li><a href="/components/">Components</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/cookbook/">Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
</ul>
</nav>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<header>
<h1 class="title indent">
SMTP
</h1>
</header>
<hr class="divider">
<p>The <code class="highlighter-rouge">smtp</code> platform allows you to deliver notifications from Home Assistant to an e-mail recipient.</p>
<p>To enable notification by e-mail in your installation, add the following to your <code class="highlighter-rouge">configuration.yaml</code> file:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">notify</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s">NOTIFIER_NAME</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">smtp</span>
<span class="s">sender</span><span class="pi">:</span> <span class="s">YOUR_SENDER</span>
<span class="s">recipient</span><span class="pi">:</span> <span class="s">YOUR_RECIPIENT</span>
</code></pre>
</div>
<p>Configuration variables:</p>
<ul>
<li><strong>name</strong> (<em>Optional</em>): Setting the optional parameter <code class="highlighter-rouge">name</code> allows multiple notifiers to be created. The default value is <code class="highlighter-rouge">notify</code>. The notifier will bind to the service <code class="highlighter-rouge">notify.NOTIFIER_NAME</code>.</li>
<li><strong>sender</strong> (<em>Required</em>): E-mail address of the sender.</li>
<li><strong>recipient</strong> (<em>Required</em>): E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients.</li>
<li><strong>server</strong> (<em>Optional</em>): SMTP server which is used to end the notifications. Defaults to <code class="highlighter-rouge">localhost</code>.</li>
<li><strong>port</strong> (<em>Optional</em>): The port that the SMTP server is using. Defaults to 25.</li>
<li><strong>timeout</strong> (<em>Optional</em>): The timeout in seconds that the SMTP server is using. Defaults to 5.</li>
<li><strong>username</strong> (<em>Optional</em>): Username for the SMTP account.</li>
<li><strong>password</strong> (<em>Optional</em>): Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes.</li>
<li><strong>starttls</strong> (<em>Optional</em>): Enables STARTTLS, eg. True or False. Defaults to False.</li>
<li><strong>sender_name</strong> (<em>Optional</em>): Sets a custom sender name in the emails headers (<em>From</em>: Custom name <a href="mailto:example@mail.com">example@mail.com</a>).</li>
<li><strong>debug</strong> (<em>Optional</em>): Enables Debug, eg. True or False. Defaults to False.</li>
</ul>
<p>A sample configuration entry for Google Mail.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">notify</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s">NOTIFIER_NAME</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">smtp</span>
<span class="s">server</span><span class="pi">:</span> <span class="s">smtp.gmail.com</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">587</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">15</span>
<span class="s">sender</span><span class="pi">:</span> <span class="s">john@gmail.com</span>
<span class="s">starttls</span><span class="pi">:</span> <span class="s">true</span>
<span class="s">username</span><span class="pi">:</span> <span class="s">john@gmail.com</span>
<span class="s">password</span><span class="pi">:</span> <span class="s">thePassword</span>
<span class="s">recipient</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">james@gmail.com</span>
<span class="pi">-</span> <span class="s">bob@gmail.com</span>
<span class="s">sender_name</span><span class="pi">:</span> <span class="s">My Home Assistant</span>
</code></pre>
</div>
<p>Keep in mind that Google has some extra layers of protection which need special attention (Hint: Less secure apps).</p>
<p>To use the SMTP notification, refer to it in an automation or script like in this example:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">burglar</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Burglar Alarm</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">shell_command.snapshot</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.NOTIFIER_NAME</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">title</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Intruder</span><span class="nv"> </span><span class="s">alert'</span>
<span class="s">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Intruder</span><span class="nv"> </span><span class="s">alert</span><span class="nv"> </span><span class="s">at</span><span class="nv"> </span><span class="s">apartment!!'</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">images</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">/home/pi/snapshot1.jpg</span>
<span class="pi">-</span> <span class="s">/home/pi/snapshot2.jpg</span>
</code></pre>
</div>
<p>The optional <code class="highlighter-rouge">images</code> field adds in-line image attachments to the email. This sends a text/HTML multi-part message instead of the plain text default.</p>
<p>The optional <code class="highlighter-rouge">html</code> field makes a custom text/HTML multi-part message, allowing total freedom for sending rich html emails. In them, if you need to attach images, you can pass both arguments (<code class="highlighter-rouge">html</code> and <code class="highlighter-rouge">images</code>), the attachments will be joined with the basename of the images, so they can be included in the html page with <code class="highlighter-rouge">src="cid:image_name.ext"</code>.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">burglar</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Burglar Alarm</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">shell_command.snapshot</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.NOTIFIER_NAME</span>
<span class="s">data_template</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Intruder</span><span class="nv"> </span><span class="s">alert</span><span class="nv"> </span><span class="s">at</span><span class="nv"> </span><span class="s">apartment!!'</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">images</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">/home/pi/snapshot1.jpg</span>
<span class="pi">-</span> <span class="s">/home/pi/snapshot2.jpg</span>
<span class="s">html</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span>
<span class="no">&lt;html lang="en" xmlns="http://www.w3.org/1999/xhtml"&gt;</span>
<span class="no">&lt;head&gt;</span>
<span class="no">&lt;meta charset="UTF-8"&gt;</span>
<span class="no">&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;</span>
<span class="no">&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;</span>
<span class="no">&lt;title&gt;Intruder alert&lt;/title&gt;</span>
<span class="no">&lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css"&gt;</span>
<span class="no">&lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"&gt;</span>
<span class="no">&lt;style type="text/css"&gt;</span>
<span class="no">@font-face {</span>
<span class="no">font-family: 'Open Sans';</span>
<span class="no">font-style: normal;</span>
<span class="no">font-weight: 300;</span>
<span class="no">src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZS3E-kSBmtLoNJPDtbj2Pk.ttf) format('truetype');</span>
<span class="no">}</span>
<span class="no">h1,h2,h3,h4,h5,h6 {</span>
<span class="no">font-family:'Open Sans',Arial,sans-serif;</span>
<span class="no">font-weight:400;</span>
<span class="no">margin:10px 0</span>
<span class="no">}</span>
<span class="no">&lt;/style&gt;</span>
<span class="no">&lt;/head&gt;</span>
<span class="no">&lt;body&gt;</span>
<span class="no">&lt;div class="jumbotron jumbotron-fluid" style="background-color: #f00a2d; color: white;"&gt;</span>
<span class="no">&lt;div class="container py-0"&gt;</span>
<span class="no">&lt;h1&gt;Intruder alert at apartment!!&lt;/h1&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;div class="container-fluid"&gt;</span>
<span class="no">&lt;div class="row"&gt;</span>
<span class="no">&lt;div class="col-xs-12 col-md-6 px-0"&gt;</span>
<span class="no">&lt;img class="rounded" style="width: 100%;"</span>
<span class="no">alt="snapshot1" src="cid:snapshot1.jpg" /&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;div class="col-xs-12 col-md-6 px-0"&gt;</span>
<span class="no">&lt;img class="rounded" style="width: 100%;"</span>
<span class="no">alt="snapshot2" src="cid:snapshot2.jpg" /&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;br&gt;</span>
<span class="no">&lt;/div&gt;</span>
<span class="no">&lt;/body&gt;</span>
<span class="no">&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"&gt;&lt;/script&gt;</span>
<span class="no">&lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"&gt;&lt;/script&gt;</span>
<span class="no">&lt;/html&gt;</span>
</code></pre>
</div>
<p>Obviously, this kind of complex html email reporting is done much more conveniently using Jinja2 templating from an <a href="https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/">AppDaemon app</a>, for example.</p>
<p>This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations.</p>
<p>A combination that will work properly is port 587 and STARTTLS. Its recommended to enable STARTTLS, if possible.</p>
<p>Keep in mind that if the password contains a colon, it needs to be wrapped in apostrophes in the <code class="highlighter-rouge">configuration.yaml</code> file.</p>
<p>For Google Mail (smtp.gmail.com) an additional step in the setup process is needed. Google has some extra layers of protection
which need special attention. By default, the usage by external applications, especially scripts, is limited. Visit the <a href="https://www.google.com/settings/security/lesssecureapps">Less secure apps</a> page and enable it.</p>
<p>To use notifications, please see the <a href="/getting-started/automation/">getting started with automation page</a>.</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/notify.smtp.markdown'>Edit this page on GitHub</a></div>
<div class='brand-logo-container section'>
<img src='/images/supported_brands/smtp.png' />
</div>
<div class='section'>
Introduced in release: pre 0.7
</div>
<div class='section'>
This is a platform for
<a href='/components/notify/'>the Notifications component</a>.
</div>
<div class='section'>
<h1 class="title delta">Category Notifications</h1>
<ul class='divided'>
<li>
<a href='/components/notify.apns/'>APNS</a>
</li>
<li>
<a href='/components/notify.aws_lambda/'>AWS Lambda</a>
</li>
<li>
<a href='/components/notify.aws_sns/'>AWS SNS</a>
</li>
<li>
<a href='/components/notify.aws_sqs/'>AWS SQS</a>
</li>
<li>
<a href='/components/notify.ciscospark/'>Cisco Spark</a>
</li>
<li>
<a href='/components/notify.command_line/'>Command line Notify</a>
</li>
<li>
<a href='/components/notify.discord/'>Discord</a>
</li>
<li>
<a href='/components/notify.ecobee/'>Ecobee Notify</a>
</li>
<li>
<a href='/components/notify.facebook/'>Facebook Messenger</a>
</li>
<li>
<a href='/components/notify.file/'>File</a>
</li>
<li>
<a href='/components/notify.free_mobile/'>Free Mobile</a>
</li>
<li>
<a href='/components/notify.gntp/'>GNTP (Growl)</a>
</li>
<li>
<a href='/components/notify.instapush/'>Instapush</a>
</li>
<li>
<a href='/components/notify.xmpp/'>Jabber (XMPP)</a>
</li>
<li>
<a href='/components/notify.joaoapps_join/'>Join Notify</a>
</li>
<li>
<a href='/components/notify.kodi/'>Kodi</a>
</li>
<li>
<a href='/components/notify.webostv/'>LG WebOS TV notifications</a>
</li>
<li>
<a href='/components/notify.lannouncer/'>Lannouncer</a>
</li>
<li>
<a href='/components/notify.llamalab_automate/'>LlamaLab Automate</a>
</li>
<li>
<a href='/components/notify.mqtt/'>MQTT Notifications</a>
</li>
<li>
<a href='/components/mailgun/'>Mailgun</a>
</li>
<li>
<a href='/components/notify.mailgun/'>Mailgun Notify</a>
</li>
<li>
<a href='/components/notify.matrix/'>Matrix</a>
</li>
<li>
<a href='/components/notify.message_bird/'>MessageBird</a>
</li>
<li>
<a href='/components/notify.mysensors/'>MySensors Notify</a>
</li>
<li>
<a href='/components/notify.nfandroidtv/'>Notifications for Android TV / FireTV</a>
</li>
<li>
<a href='/components/notify.group/'>Notify Group</a>
</li>
<li>
<a href='/components/notify.nma/'>Notify My Android</a>
</li>
<li>
<a href='/components/notify.html5/'>Push Notifications</a>
</li>
<li>
<a href='/components/notify.pushbullet/'>Pushbullet</a>
</li>
<li>
<a href='/components/notify.pushetta/'>Pushetta</a>
</li>
<li>
<a href='/components/notify.pushover/'>Pushover</a>
</li>
<li>
<a href='/components/notify.pushsafer/'>Pushsafer</a>
</li>
<li>
<a href='/components/notify.rest/'>REST</a>
</li>
<li>
SMTP
</li>
<li>
<a href='/components/notify.sendgrid/'>SendGrid</a>
</li>
<li>
<a href='/components/notify.simplepush/'>Simplepush</a>
</li>
<li>
<a href='/components/notify.slack/'>Slack</a>
</li>
<li>
<a href='/components/notify.syslog/'>Syslog</a>
</li>
<li>
<a href='/components/notify.telegram/'>Telegram</a>
</li>
<li>
<a href='/components/notify.telstra/'>Telstra</a>
</li>
<li>
<a href='/components/notify.twilio_call/'>Twilio Call</a>
</li>
<li>
<a href='/components/notify.twilio_sms/'>Twilio SMS</a>
</li>
<li>
<a href='/components/notify.twitter/'>Twitter</a>
</li>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
</body>
</html>