---
title: PowerShellでOutlookメールを作成する
url: 'https://automationse.net/powershell%E3%81%A7outlook%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B'
markdown: 'https://automationse.net/powershell%E3%81%A7outlook%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B.md'
date: '2022-04-01'
description: '今回はPowerShellを使用して簡単なメールの作成を自動化する方法を記載します。 前提条件です。メーラーは「Outlook」を使用します。既に「Outlook」を起動していることを前提としています。メールの形式は「HTML形式」です。(フォントとサイズを変更する方法がこれしかわからないからです…。) #HTMLでメール本文を…'
taxonomy:
  category:
    - IT関連
  tag:
    - PowerShell
    - 自動化
---

## [PowerShellでOutlookメールを作成する](https://automationse.net/powershell%E3%81%A7outlook%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)

  公開日 2022.04.01 更新日 2022.04.01  [PowerShell](https://automationse.net/tag:PowerShell#body-wrapper) [自動化](https://automationse.net/tag:%E8%87%AA%E5%8B%95%E5%8C%96#body-wrapper)  

 今回はPowerShellを使用して簡単なメールの作成を自動化する方法を記載します。

- 前提条件です。
    - メーラーは「Outlook」を使用します。
    - 既に「Outlook」を起動していることを前提としています。
    - メールの形式は「HTML形式」です。(フォントとサイズを変更する方法がこれしかわからないからです…。)

```
#HTMLでメール本文を作成している
$Body = "
TEST<br>
TEST<br>
"
$template = @()
$template += "<html><head><style type='text/css'>
<!--
body {font-size:10.5; font-family: Meiryo UI;}
-->
</style>

<!-- Google Tag Manager (managed by Grav Google Tools) -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer',"GTM-T7C4GV5");</script>
<meta name="google-adsense-account" content="ca-pub-8538204815849426">
<!-- Google AdSense (managed by Grav Google Tools) --><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8538204815849426" crossorigin="anonymous"></script>
</head>
<body>
<!-- Google Tag Manager (noscript) --><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T7C4GV5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>"
$template += $Body
$template += "
<!-- Conversion events (managed by Grav Google Tools) -->
<script>
(function(cfg){
  function emit(name, params){
    params = params || {};
    if (cfg.mode === 'direct') {
      if (typeof window.gtag === 'function') window.gtag('event', name, params);
      return;
    }
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push(Object.assign({event: name}, params));
  }
  function textOf(el){ return ((el && el.textContent) || '').trim().slice(0, 120); }

  var path = window.location.pathname || '/';
  (cfg.events.paths || []).forEach(function(rule){
    var matched = rule.match === 'exact' ? path === rule.path :
      rule.match === 'prefix' ? path.indexOf(rule.path) === 0 : path.indexOf(rule.path) !== -1;
    if (!matched) return;
    var params = {page_path: path};
    if (rule.send_to) params.send_to = rule.send_to;
    emit(rule.event_name, params);
  });

  document.addEventListener('click', function(ev){
    var target = ev.target && ev.target.closest ? ev.target : null;
    if (!target) return;

    (cfg.events.clicks || []).forEach(function(rule){
      try {
        var matched = target.closest(rule.selector);
        if (!matched) return;
        var params = {element_text: textOf(matched)};
        if (matched.href) params.link_url = matched.href;
        if (rule.send_to) params.send_to = rule.send_to;
        if (typeof rule.value === 'number') params.value = rule.value;
        if (rule.currency) params.currency = rule.currency;
        emit(rule.event_name, params);
      } catch (e) {}
    });

    var link = target.closest('a[href]');
    if (!link) return;
    var url;
    try { url = new URL(link.href || '', window.location.href); } catch (e) { return; }

    if (cfg.events.download && cfg.events.download.enabled) {
      var pathname = (url.pathname || '').toLowerCase();
      var ext = pathname.indexOf('.') !== -1 ? pathname.split('.').pop() : '';
      if ((cfg.events.download.extensions || []).indexOf(ext) !== -1) {
        emit(cfg.events.download.event_name, {link_url: url.href, link_text: textOf(link), file_extension: ext});
      }
    }

    if (cfg.events.outbound && cfg.events.outbound.enabled && /^https?:$/.test(url.protocol) && url.hostname !== window.location.hostname) {
      emit(cfg.events.outbound.event_name, {link_url: url.href, link_domain: url.hostname, link_text: textOf(link)});
    }
  }, true);
})({"mode":"gtm","events":{"download":{"enabled":true,"event_name":"file_download","extensions":["apk","zip","pdf","doc","docx","xls","xlsx","ppt","pptx"]},"outbound":{"enabled":true,"event_name":"outbound_click"},"clicks":[],"paths":[]}});
</script>
</body></html>"
#メール本文が格納されている配列を改行コードで分割してString型にする
$templateStr = $template -join "`n"
# Outlookプロセスが存在するか調べる。
$outlookProc =Get-Process|Where-Object {$_.Name -match "OUTLOOK"}
if ($outlookProc -eq $null){
    $existsOutlook = $false
}else{
    $existsOutlook = $true
}
#Outlookプロセスがそ存在する場合
if ($existsOutlook) {
    $OutlookObj = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
    #メールを作成する
    $Mail = $OutlookObj.CreateItem(0)
    #Toの設定(ここでは何も設定していない変数を使用しています)
    $Mail.To = $To

    #Ccの設定(ここでは何も設定していない変数を使用しています)
    $Mail.CC = $CC

    #件名の設定(ここでは何も設定していない変数を使用しています)
    $Mail.Subject = $Subject

    #HTMLでメールを作成します。
    $Mail.HTMLBody =$templateStr
#作成したメールを表示
$inspector = $Mail.GetInspector
$inspector.Display()
}
```

これでメールの作成は自動でできるようになったかと思います。

そのうち、

HTMLを使用せずにフォントとフォントサイズを変更する方法を見つけられたらまたアップデートしてみたいと思います。

  Previous Post Next Post

---

## Navigation

- Previous: [お問い合わせフォーム](https://automationse.net/%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0.md)
- Next: [PowerShellでCSVファイルを読み込む方法](https://automationse.net/powershell%E3%81%A7csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80%E6%96%B9%E6%B3%95.md)
