LoginSignup
2
1

More than 3 years have passed since last update.

VBAを使ってスクレイピングの結果をメール送信する(さくらのレンタルサーバー使用)

Posted at

スクレイピングの結果を即知りたいというのはよくある話。
Apiを使って結果を登録するのがいいのですが・・
「今日中に」とかいきなり言われると、社内ツールのアカウント手続きとか間に合わなくて。

そんな場合は自分のメールアドレスを使い結果を送信します。

自分の会社はさくらのレンタルサーバーをつかっているのですが、メールの設定がさくらのレンタルサーバーになっている記事が少なかったのでこちらにメモします。

VBAを使ってメールを送信するには以下のサイトが詳しくてわかりやすいです。
ほぼ下記のサイトそのままなのですがさくらのレンタルサーバー用にアレンジしました。
VBAでメール送信する(CDO:Microsoft Collaboration Data Objects)
※上のサイトでMicrosoft CDO for Windows 2000 Libraryの参照設定をしたら下の関数が使えるはずです。
※smtpサーバーなどメールの設定がわからないという場合はoutlookなどメーラの設定を参考にするとできます。

vba

'*******************************************************************************
'メールを送信する さくらのレンタルサーバー使用
'-------------------------------------------------------------------------------
'   引渡値 = ①メール件名
'      ②メール本文
'            ③送信先メールアドレス
'   戻り値=エラーなし true エラー false  プログラム的にエラーがあるかないかだけで実際に届くかどうかは別
'   参考= https://help.sakura.ad.jp/206206021/
'      http://mofuken.blogspot.com/2014/07/windows-cdomessage.html
'           http://hiroses.seesaa.net/article/365310670.html
'*******************************************************************************

Function SendSakuraMail(kenmei As String, mozi As String, address As String) As Boolean

    Dim objCDO As New CDO.Message    

    On Error GoTo Errlabel    'エラー処理

    With objCDO

        With .Configuration.Fields 
            .Item(cdoSMTPServer) = "ここにSMTPサーバー名を記入" 
            .Item(cdoSendUsingMethod) = cdoSendUsingPort
            .Item(cdoSMTPServerPort) = 587             '送信サーバーのポート番号
            .Item(cdoSMTPConnectionTimeout) = 15          'タイムアウト
            .Item(cdoSMTPAuthenticate) = cdoBasic          'SMTP認証
            .Item(cdoSMTPUseSSL) = False               'SSL
            .Item(cdoSendUserName) = "ここに送信元ユーザーのメールアドレスを記入" 
            .Item(cdoSendPassword) = "ここに送信元ユーザーのパスワードを記入" 
            .Item(cdoLanguageCode) = CdoCharset.cdoShift_JIS          '文字セット指定
            .Update '設定を更新
        End With
        With .Fields
            '重要度、通常は以下のどちらかで良いでしょう
            .Item("urn:schemas:mailheader:X-Priority") = 1
            .Item("urn:schemas:mailheader:X-MsMail-Priority") = "High"
            .Update '設定を更新
        End With
        .MDNRequested = False '開封確認
        .MimeFormatted = True 'MIMEを使って書式設定
        .From = "送信元ユーザーのメールアドレス"
        .To = address                        '関数の引数で受け取った送信先
        .CC = "CCに付け加えたいメールアドレス"
        .subject = kenmei                    '関数の引数で受け取った件名
        .TextBody = mozi                    '関数の引数で受け取ったメール本文
        .Send                                  '送信

    End With

    Set objCDO = Nothing

    SendSakuraMail = True

    Exit Function



Errlabel:


    SendSakuraMail = False   '何かしらのエラーの場合はfasleをreturanする


End Function

SSLの部分をfalseにしてみたり、ポート番号をいろりろ調整し、やっと送信できました。
このままできなかったら間に合わないと焦っていたのでできてよかったです。

2
1
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
2
1