見出し画像

XOJOであそぼう - 04. メールしてみる

そろそろ本格的になにか書いてみよう

Xojoのいいとこ、きになるとこ、書き連ねてみました前回ですが、今回からは本格的になにか使いそうなものをやってみようと思います。

といっても、まだ難しさはありません。

メールしてみないか

今回のお題は、ビジネスではまだまだ現役の化石ツール、電子メールです。

電子メール、いわゆるEメールアドレスはいまやSNSのアカウントを登録するためのIDにしか使ってないのではないか?とさえ思ってしまうところがあります。

でも、いまでも現役!!せっかくなのでXojoからさくっとメールできるようになりましょう。

VBAでもできるよ

いや、もう少し言えばWSHでもできます。

しかしそこは…Xojoからやりましょうよ。ね、やりましょうよ!

Xojoでメールを扱うには、「EmailMessage」クラスと「SMTP」クラスを使います。いきなり「なんやそれ?」というものが登場しましたが、構えなくて大丈夫です。EmailMessageクラスはメールそのもの、SMTPクラスはメール送信することだと思っておいてください。

それに、サンプルアプリケーションの「Console」にある「ConsoleSendmailTest.xojo_binary_project」を利用するとほとんど記述しなくても用意できます。

SMTPクラスで送信設定する

普段メールの送受信にOutlookなどのソフトウェアを利用しているようでしたら送信設定を見てみると参考になると思います。

まずはユーザー、パスワードの認証すら必要ないような脆弱なサーバーの場合です。ここまではどの設定でも共通のところです。

server = New SMTP
server.Address = "メールサーバーのIPアドレスか名前"
server.Port = 25 // よくあるのはこの番号

これで送信設定は終わりです。

簡単でしょ?

Gmailを経由して送信する

もしGmailを経由して送信するようでしたら少しだけ設定が変わります。

server = New SMTP
server.Address = "smtp.gmail.com"
server.Port = 587
server.ConnectionType = server.TLSv1
server.Username = "youraddress@gmail.com"
server.Password = "yourp@ssword"

ユーザーとパスワードで認証するようになるのでUsernameというものとPasswordを指定するようになります。また、接続の種類を「TLSv1」としています。

会社のメール設定を見て設定する場合もだいたい似たような設定になります。

さらにGmailで2段階認証をご利用の場合はPasswordに指定するものをアプリパスワードのものにしてください。

メールを書こう

設定もできたので、次はメールを書きます。普段やっていることと流れは同じですよね。EmailMessageクラスからメールを新規作成します。

Dim mail As New EmailMessage

だれから送ったかを設定しましょう。こうしてみると、送り主って詐称できることがまるわかりですね。

mail.FromAddress = "your@mail.com"

次は件名です。英語ではSubjectというので、Subjectに指定します。

mail.Subject = "test mail"

もし日本語で書きたいのであれば次のようにしてください。

mail.Subject = "=?UTF-8?B?" + EncodeBase64("テストメール", 0) + "?="

本文を書こう

本文はBodyPlainTextに指定します。

mail.BodyPlainText = "this is test."

もし日本語で書きたい場合は…ちょっとおまじないが必要です。

mail.Headers.AppendHeader("Content-Type", "text/plain; charset=UTF-8")
mail.BodyPlainText = "こんにちは!" + Endofline.UNIX + "こんにちは!"

### メールを送ろう

メールを送りましょう。送り先のアドレスを指定します。

mail.AddRecipient("sendto@mail.com")

CCを指定したい場合はAddCCRecipientを使います。また、複数指定したい場合は送り先の数だけ繰り返します。

もうすぐ終わりです!どれを送るのかメール送信さんに教えてあげます。

server.Messages.Append(mail)

最後、メールを送ります。

server.SendMail

あとは送った先で届いているか確認してみてください。

ファイルを…添付したいです

そうですね。よくあるのは何かのファイル(Excelだったり、Excelだったり、Excelだったり…)をどなたかに定期的に送るとかよくあります。

では添付してみましょう。

まずはファイルをFolderItemクラスで準備します。

Dim img as new FolderItem(SpecialFolder.Documents.NativePath + "\sample.png")

ここではユーザーのドキュメントフォルダにある「sample.png」という画像を指定しています。

次にメール添付を表すEmailAttachmentクラスを使って添付対象にします。

Dim att as new EmailAttachment
att.LoadFromFile(img)

あとはメールに添付します。

mail.Attachments.Append(att)

これ以外は普通にメールを送るときと同じようにすればOKですね。

最後に

意外と簡単にメールすることができました。

これを改良すると、決まった宛先にだけ決まったタイトル、決まった内容のメールを決まったファイル名や種類で送信するための簡易クライアントがつくれるでしょう。

送信ミスを防止するのに一役買いそうですよ!!

データベースの何かをやってみようと思っていたのにメールにしてしまいました。

次回はデータベースにしようかな…

この記事が気に入ったらサポートをしてみませんか?