Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@apple123

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

スクレイピングの結果を即知りたいというのはよくある話。
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にしてみたり、ポート番号をいろりろ調整し、やっと送信できました。
このままできなかったら間に合わないと焦っていたのでできてよかったです。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
apple123
会社ではWEBスクレイピングの依頼が多すぎて。ソースの美しさ簡略さよりも超高速での納品をもとめられる毎日。ゆっくりソースに向き合うためにQiitaにメモしてます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?