LoginSignup
0
2

More than 1 year has passed since last update.

【Mac M1環境】MS outlookから数百通の個別メールを、連続自動送信するコードの書き方。(丸2日作業を瞬殺した話)

Last updated at Posted at 2022-06-19

<やりたい事>
下記の様なメールリストが、あります。(実際にには数百の宛先に送付する必要があります。)
list0615.png

上のメールリストに対して、下記の様なOutlookメールを個別に自動送信して、楽をしたい。
(尚、手動のBCCメールは、経験上、誰も読まないのを知っているので、楽ですが、ダメです。あくまでも個別メールにしたいと思っている。)

山田様、
これからは本文です。本日は、こんにちは!テストです。先日はありがとうございました。これはテストです。

これですが、メール数通位なら、兎も角、数百通を手動で発信したら、丸2日は掛かります。また、手動特有のメール誤送信がマジで怖いですね。
従って、手動メール送信は論外です。

<もし、Windows環境なら>
因みに、過去にも、Windows環境なら構築したことがあります。
「Python+Openpyxl+win32comで、15分で開発できるだろう!」とタカを括っていたのですが、Win32comのモジュールは、Mac環境では使えない事に、最後の最後で気が付きました。

Windows環境で自動送信する方法。(過去記事)⇨
https://qiita.com/naiveprince0507/items/3e4d322f7f1c3068487a
尚、Win32comに相当するMac用のモジュールは、丸1日掛けて探したのですが、見つかりませんでした。
ご存じの方がいたら、教えてください。

<解決策> 
Mac環境では、Pythonでの開発は難しいそうなので、Applescriptを使うことにしました。
http://tonbi.jp/AppleScript/Introduction/01/
このapplescriptですが、Macアプリを自在に操作する為のスクリプト言語の様です。(知らなかった。)
この文法を、丸一日、必死にネットで勉強したが、まあ、分かりやすいですね。(ただ、私が主戦場としている、Java,Python,Javascript等と比べると情報が少な過ぎるのが、難点。)

■ 事前準備
まず、元のExcelで、A列が宛先、B列がメールアドレスのシンプルなシートを作り、それをCSVでrecipient1.csvという名前で保存します。(保存先は、/Users/xxxxx_yyy/Desktop/code/recipient1.csv)
中身は次のような形になります。

山田,yamada@gggmail.com
高橋,takahashi@gggmail.com
鈴木,suzuki@gggmail.com

これを1行ずつ読み込み、名前とメールアドレスに分解します。この形なら1つのrepeat文で両方が得られる様にします。

で、下記のコードで動きます。

set org to AppleScript's text item delimiters -- オリジナルの区切り文字を保存
set AppleScript's text item delimiters to "," -- 区切り文字を","に変更

set srcFile to ("/Users/xxxxx_yyy/Desktop/code/recipient1.csv") as text
set lns to paragraphs of (read srcFile as «class utf8»)

-- ここからは、メール本文の読み込み。
set theText to loadText("/Users/xxxxx_yyy/Desktop/code/mailcontent1.txt")

on loadText(theFile)
	try
		open for access theFile
		set theText to read theFile
	end try
	close access theFile
	return theText
end loadText
-- メール読み込み。ここまで。

repeat with ln in lns

set theList to every text item of ln -- 区切り文字で分解してリストを作成
set theHonbun to (item 1 of theList) -- リストから宛先を取り出して本文を作成
set theAddress to item 2 of theList -- リストからアドレスを取り出し

display dialog theHonbun -- 確認のため本文を表示
display dialog theAddress -- 確認のためアドレスを表示
display dialog theText

tell application "Microsoft Outlook"
	
	set theMessage to make new outgoing message with properties {subject:theHonbun & "様、
先日はありがとうございました。これはテストです。", content:theHonbun & "様" & theText}
make new recipient with properties {email address:{address:theAddress}} at end of to recipients of theMessage
send theMessage

end tell
end repeat

set AppleScript's text item delimiters to org -- オリジナルの区切り文字に戻す

完璧に動作します。
丸2日作業を、瞬殺した事になります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2