Mail.appで送信元の氏名および送信先の氏名を明示的に指定しつつメール送信を行うAppleScriptです。
Mail.appの操作Scriptはやればやるだけ課題が見えてくるので、ほどほどのところで止めています。メールアカウントについて、1つしかアカウントを登録していなければデフォルトのメールアカウントでを前提にメール送信すればいいはずですが、複数のアカウントを登録しているケースが多いので、アカウントを指定する処理を書いてみました。
メールの大量連続送信については、1990年代からずっとAppleScriptで行なっていますが、途中で知り合いが盛大にやらかした(短時間で大量のメール送信を行なってさまざまなプロバイダのメールサーバーをコケさせかけた)影響もあって、日本国内のネットワークでは単位時間内に所定の本数を超えるメール送信を行うと、プロバイダからすぐにメール送信のリレーを止められ、その後しばらくメール送信を行えなくなるのが「お約束」となっています。
# だいたい、1秒に1通以上(1分に60通以上)送信すると疑われます。
かくして、メールの大量一括送信をScriptで行う場合には、ある程度「待ち時間」を入れつつ送信するか、REST API経由でSendGridのサービスを呼び出してメーラー以外でメール送信を行うあたりが落とし所になっています。
AppleScript名:Mail.appで送信元を明示的に指定しつつメール送信 |
–本来、メールアカウントのnameがわかっていれば、わざわざリストから選択する必要はない tell application "Mail" set aList to name of every account set aaSel to choose from list aList if aaSel = {} or aaSel = false then return set aSel to first item of aaSel end tell log aSel set mRes to makeAMailWithSpecifiedAccount("メールのタイトルだよ100", "テストメールの本文だよ100", "送信者の名前だよ", "送付先氏名", "nobody@piyocast.com", aSel) of me on makeAMailWithSpecifiedAccount(theSubject, theBody, myName, yourName, yourAddress, myAccountName) tell application "Mail" –Account check set anAccount to account myAccountName set aProp to enabled of anAccount if aProp is not equal to true then return false –アカウントが有効でなかった場合はエラーに set eList to (email addresses of anAccount) if eList = {} then return false –アカウントにメールアドレスの登録がなかった場合はエラーに(ねんのため) set myEmail to first item of eList –Make Sender set theSender to myName & "<" & myEmail & ">" –Make Message & Send set newMessage to make new outgoing message with properties {sender:theSender, subject:theSubject, content:theBody & return & return, visible:false} tell newMessage set visible to false make new to recipient at end of to recipients with properties {name:yourName, address:yourAddress} –受取人の指定 send –メール送信 end tell end tell return true end makeAMailWithSpecifiedAccount |
(Visited 717 times, 1 visits today)
NSSharingService経由でメールを新規作成(作成するだけ、送信しない) - AppleScript Hole says:
[…] 仕様上、新規作成するだけで送信は行いません。普通にMail.appをコントロールすればメールの送信は行えるので、単にNSSharingServiceのテストです。 […]