office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

利用Outlook發(fā)郵件

2017-07-21 10:10:00
zstmtony
原創(chuàng)
12251
論壇里已經(jīng)有不少這方面的例子了,有用CDO的也有用Outlook組件的。不過個(gè)人偏向于用Outlook。
我對(duì)Outlook其實(shí)并不熟悉,內(nèi)置的對(duì)象基本都是現(xiàn)學(xué)現(xiàn)賣的。不過既然有朋友問到,那就寫寫,算是整合一下吧。

在使用Outlook發(fā)郵件之前,必須要先設(shè)置好收件和發(fā)件服務(wù)器。下面,就以網(wǎng)易的yeah.net為例,跟我先設(shè)置好吧。一般情況下,登錄郵箱網(wǎng)站后,可以在“設(shè)置”或者“幫助”(例如,搜狐閃電郵)里找到pop3服務(wù)器和SMTP服務(wù)器地址:


 
然后打開Outlook。如果是第一次打開,按向?qū)б徊讲絹砭秃昧?。如果已?jīng)設(shè)置了一個(gè)賬號(hào),則可以在“文件/信息/添加賬號(hào)”里自行添加:
 
個(gè)人不太贊成自動(dòng)添加。畢竟,自動(dòng)添加時(shí)機(jī)器識(shí)別還不如手動(dòng)錄入準(zhǔn)確。然后選擇POP3(如果是公司內(nèi)部架設(shè)郵箱服務(wù)器的話,應(yīng)該是Exchange,這里就不深究了):
 
然后就是填上這些信息了。需要注意的是,姓名是希望顯示的名字(例如:不明真相的吃瓜吃餅喝水吃面群眾),最下面的用戶名是登錄郵箱的用戶名。填入前面在網(wǎng)站上看到的POP3和SMTP服務(wù)器地址:
 
需要注意的是,大多數(shù)郵箱發(fā)送時(shí)可能都需要驗(yàn)證,因此還需要在“其它設(shè)置”里勾選(如果不勾選的話,只能收郵件而不能發(fā)郵件):
 
-------------------------------------------------------------

至此,設(shè)置結(jié)束。接下來就是寫代碼完成發(fā)送的過程了:


Function SendMailToAll(ByVal strSubject As String, ByVal strBody As String, Optional ByVal blnAttachment As Boolean = False)
    '定義Outlook組件
    Dim appOutlook As New Outlook.Application
    Dim objMailItem As Outlook.MailItem
    
    '定義記錄集,用于讀取郵箱列表
    Dim rst As New ADODB.Recordset
    Dim strMailAddress As String
    
    '定義文件拾取器,用于添加多個(gè)附件。
    Dim fd As FileDialog
    Dim i As Long
    
    Set objMailItem = appOutlook.CreateItem(olMailItem)
    
    With objMailItem
    
        '打開郵箱列表并在讀取完畢后關(guān)閉郵箱列表
        rst.Open "tblMailingList", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            Do Until rst.EOF
                strMailAddress = strMailAddress & rst(1) & ";"
                rst.MoveNext
            Loop
        .To = strMailAddress
        rst.Close
        Set rst = Nothing
        
        '設(shè)置主題和主體,如需格式化文本,請(qǐng)使用HTMLBody屬性,并編寫HTML代碼:
        .Subject = strSubject
        .Body = strBody
        
        '.HTMLBody = "<P style=""color:red;font-size:14px;font-weight:700"">" & strBody & "</p>"
        
        '是否上傳附件。如需上傳,則打開文件拾取器。
        If blnAttachment Then
            If MsgBox("您已經(jīng)選擇了上傳附件,為了便于一次上傳多個(gè)附件,請(qǐng)務(wù)必確保所有附件都在同一個(gè)文件夾內(nèi)。", vbYesNoCancel) = vbYes Then
                Set fd = Application.FileDialog(msoFileDialogFilePicker)
                fd.AllowMultiSelect = True
                If fd.SHOW = -1 Then
                    For i = 1 To fd.SelectedItems.Count
                        .Attachments.Add fd.SelectedItems(i), olByValue, , Mid(fd.SelectedItems(i), InStrRev(fd.SelectedItems(i), "") + 1, Len(fd.SelectedItems(i)))
                    Next
                End If
            End If
        End If
        
        .Send
    End With
End Function
大部分注釋已經(jīng)有了,就不再一一解釋代碼了。需要引用Outlook庫、Office庫和ActiveX Data Object庫。運(yùn)行代碼前請(qǐng)確認(rèn)這一點(diǎn)。
其它:
由于Outlook的安全機(jī)制問題,發(fā)送時(shí)會(huì)彈出安全警告,等幾秒后點(diǎn)擊“允許”即可。網(wǎng)上有說安裝VS的Outlook安全管理器插件可以解決這個(gè)問題。但個(gè)人覺得沒必要。特別是分發(fā)給用戶使用時(shí),是不是每個(gè)用戶都幫ta安裝?
分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問