Kategorie szkoleń | Egzaminy | Kontakt
  • 3
  • 0
  • 38

Dzień dobry.

Potrzebuję napisać kod pozwalający na wysyłanie maila do określonych odbiorców, w treści którego jest link.

Samo wysyłanie jest proste (albo (1) przez polecenie DoCmd.SendObject acSendNoObject, albo (2) przez new Outlook.application) i nie mam z tym problemu.

Problem pojawia się, gdy chcę, żeby pole z tabeli, które jest linkiem pojawiło się w treści maila, jako link. Cały czas wskakuje mi jako zwykły tekst.

Nie jest to problem z formatem maila, bo przy opcji (1) wskakuje mi format wiadomości: zwykły tekst, a przy opcji (2) jest HTML, ale i tak wskazany tekst nie jest hiperłączem.

Co napisać, żeby wartość jakiegoś pola pojawiała się jako hiperłącze w treści maila?

Pozdrawiam.
Tomek Kasprzycki.

Tomasz_Kasprzycki
  • Zapytał
  • @ Tomasz_Kasprzycki | 14.03.2017
    • 2
    • 4
    • 8

Odpowiedzi (3)

  • 0

Zadałem pytanie i sam sobie na nie odpowiem.

Po dłuższym poszukiwaniu udało mi się rozwikłać zagadkę. Otóż trzeba użyć drugiej wersji wysyłki (ale do tego trzeba sobie włączyć MS HTML Object Library) i wpisać:

Private Sub Polecenie22_Click()
On Error GoTo PrzyBłędzie

Dim olAP As Object
Dim olMAIL As Object
Dim LinkDoDok, MailCCList, MailToList, textHTML As String
Dim odp As Integer
Dim bolHTML As Boolean

If IsNull(Me.Folder_dokumentacji.Value) Then
    GoTo ZapytajCoDalej
Else
    LinkDoDok = HyperlinkPart(Me.Folder_dokumentacji.Value, acFullAddress) 'XXX tu pozbędziemy się # na początku i końcu adresu XXX
    GoTo TrescMaila
End If

ZapytajCoDalej:
    odp = MsgBox("Nie podano folderu dokumentacji. Czy chcesz wysłać pomimo to?", vbInformation + vbYesNo + vbDefaultButton2, WERSJA)
If odp = vbYes Then
    LinkDoDok = "Nie podano folderu!"
    GoTo TrescMaila
Else
    GoTo KoniecPracy
End If


TrescMaila: 'XXX i tu był pies pogrzebany - treść maila musi być napisana w HTML'u! XXX.

textHTML = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>" _
& "<html xmlns='http://www.w3.org/1999/xhtml'>" _
& "    <head>" _
& "        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />" _
& "        <title>TEST</title>" _
& "        <style type='text/css'>" _
& "        body {margin: 0; padding: 0; min-width: 100%!important;}" _
& "        .content {width: 100%; max-width: 600px;}" _
& "        </style>" _
& "    </head>" _
& "    <body bgcolor='white'>" _
& "       <font face='calibri'>Cześć,<br /><br />" _
& "        Przyszła nowa dokumentacja <br />" _
& "        Dokumentacja jest w folderze: <b>" & LinkDoDok & "</b><br /><br />" _
& "        <a href='" & LinkDoDok & "'>Kliknij tutaj (jak nie zadziała, to skopiuj podkreślony link i wklej go do przeglądarki)</a><br /><br />") _
& "       Pozdrawiam,</font><br />" _
& "    </body>" _
& "</html>"

MailToList = "jan.kowalski@mail.pl"
MailCCList = "anna.nowak@mail.pl"

Set olAP = New Outlook.Application
Set olMAIL = olAP.CreateItem(olMailItem)
bolHTML = True

With olMAIL
    .To = MailToList
    .CC = MailCCList
    .Subject = "Nowa dokumentacja"
    .HTMLBody = textHTML
    .Display
End With

 

KoniecPracy:
Exit Sub

PrzyBłędzie:
MsgBox "Błąd! Numer błędu: " & Err.Number & ". " & Err.Description, vbCritical
Resume KoniecPracy

End Sub

Problem mam teraz z tym, że nie potrafię wpisać kodu, który pozwoli mi skoczyć do folderu sieciowego. Jak wpisuję adres \\serwer\folder\podfolder, to nie działa... działa tylko: http:/jakas.strona lub c:\folder\podfolder. Czy ktoś może wie, co w tym przypadku pomoże?

Tomek.

Tomasz_Kasprzycki
  • Odpowiedział
  • @ Tomasz_Kasprzycki | 15.03.2017
    • 2
    • 4
    • 8
  • 1

Podstawiłem do zmiennej ścieżkę do zasobu sieciowego i u mnie Twój textHTML działa (w mailu pojawia się link z opisem "kliknij...", lewy klik z ctrl otwiera folder):

LinkDoDok = "\\tp\dfs\N\nmo\B2B"

Może przekombinowałeś gdzieś przy pozyskaniu ścieżki i LinkDoDok nie jest czystym tekstem?

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 11.04.2017
    • 1
    • 7
    • 1
  • 0

Dzięki. Sprawdzę to, ale dopiero po świętach.

Czasem tak bywa, że się na szybko coś klika i za dużo się wkleja. ;)

edit: No i wszystko działa. Nie wiem jakim cudem, ale zaczęło działać. :)

Tomasz_Kasprzycki
  • Odpowiedział
  • @ Tomasz_Kasprzycki | 12.04.2017
    • 2
    • 4
    • 8