2013-09-26 24 views
0

下面被張貼HK1響應答案在VBA發送電子郵件沒有Outlook的代碼的電子郵件簽名,日期爲7月20日12包括在

代碼工作很好,但我需要添加一個簽名塊在文本的末尾(基本上是一個本地文件夾中的jpg文件),但是我能夠想到的最好的方式是將路徑(文本)而不是圖像本身添加到電子郵件正文。

Const cdoSendUsingPickup = 1 
Const cdoSendUsingPort = 2 
Const cdoAnonymous = 0 
' Use basic (clear-text) authentication. 
Const cdoBasic = 1 
' Use NTLM authentication 
Const cdoNTLM = 2 'NTLM 

Public Sub SendEmail() 
Dim imsg As Object 
Dim iconf As Object 
Dim flds As Object 
Dim schema As String 

Set imsg = CreateObject("CDO.Message") 
    Set iconf = CreateObject("CDO.Configuration") 
Set flds = iconf.Fields 

' send one copy with SMTP server (with autentication) 
schema = "http://schemas.microsoft.com/cdo/configuration/" 
flds.Item(schema & "sendusing") = cdoSendUsingPort 
flds.Item(schema & "smtpserver") = "mail.myserver.com" 
flds.Item(schema & "smtpserverport") = 25 
flds.Item(schema & "smtpauthenticate") = cdoBasic 
flds.Item(schema & "sendusername") = "[email protected]" 
flds.Item(schema & "sendpassword") = "password" 
flds.Item(schema & "smtpusessl") = False 
flds.Update 

With imsg 
    .To = "[email protected]" 
    .From = "[email protected]" 
    .Subject = "Test Send" 
    .HTMLBody = "Test" 
    '.Sender = "Sender" 
    '.Organization = "My Company" 
    '.ReplyTo = "[email protected]" 
    Set .Configuration = iconf 
    .Send 
End With 

    Set iconf = Nothing 
    Set imsg = Nothing 
    Set flds = Nothing 
End Sub 

我試圖修改代碼如下,但這只是添加文件路徑正文:

With imsg 
    .To = vRecipients 
    .From = senderEmail 
    .CC = vCC 
    .Subject = vSubject 

    vBody = Replace(vBody, vbCrLf, "<br>") 
    vBody = "<FONT face=arial size=2>" & vBody 

    vBody = vBody & "<br>" & signFile 
    .HTMLBody = vBody 

    .Sender = senderName 
    .ReplyTo = senderEmail 
    .AddAttachment vAttachments 

    Set .Configuration = iconf 
    .Send 
End With 

有什麼建議?

+0

所以'signFile'只包含簽名文件的文件名。然後你必須閱讀文件的內容並將其添加到正文中。 – dwo

回答

1

DWO是正確的。您需要使用文件系統對象或文件對象來讀取signFile的文本內容。否則,你的代碼看起來應該起作用。

這裏是你可以用它來讀取文件內容的功能。該函數簡單地假設您將傳遞整個路徑和文件名稱作爲應用程序至少讀取權限的文本文件。

Public Function GetTextFileContents(sFilePath as String) As String 
    If Dir(sFilePath) <> "" Then 
     Dim fso As Object 
     Dim ts As Object 
     Set fso = CreateObject("Scripting.FileSystemObject") 
     Set ts = fso.GetFile(sFilePath).OpenAsTextStream(1, -2) 
     GetTextFileContents = ts.ReadAll 
     ts.Close 
     Set ts = Nothing 
     Set fso = Nothing 
    End If 
End Function 
+0

我試圖在文件內容讀取,並與GetTextFileContents取代signFile,但圖像沒有在電子郵件中顯示出來,而不是它顯示 ÿØÿà,我的猜測是二進制內容的一部分? – PeterJ

+0

簽名中的圖像是一個複雜的問題。我訴諸告訴我的用戶,包括它們是不可行的。我不認爲圖像實際存儲在簽名中。我認爲這可能是一個相對的文件路徑,但我不記得。您可以使用記事本手動打開簽名文件。它應該是一個.HTML文件。在Google中搜索Outlook存儲簽名的位置。 – HK1

+0

實際上,簽名文件只是帶有徽標和一些聯繫人詳細信息的jpg。所以我想它是什麼歸結爲如何在使用CDO.Message時在圖像中包含圖像? – PeterJ

0

您是否試過現成的解決方案?過去我使用過免責聲明和emailsignanture.com。我認爲emailsignature如何得到過去,你討論JPEG挑戰是,將圖像作爲HTML降價,類似於做:

(/path/to/img.jpg)

(/路徑/到/ IMG。 JPG「可選標題」)

,處理不同的渲染代理的大小。