Hallo,
Das Ziel welches ich verfolge ist, ein mail zu versenden wo ein Link drinnen ist aber nicht als einfachen url sondern mit <a href=...... >click me</a>
Das mach ich so:
Sub MimeMailer(SendTo As Variant, Subject As String, url As String, doc As NotesDocument)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim body As NotesMIMEEntity
Dim stream As NotesStream
Dim tmpURL As String
Dim message As NotesDocument
Dim mailbox As New NotesDatabase("","")
Set db = s.CurrentDatabase
tmpURL = |<font face="Arial" size="2"><a href='| + URL + |'>Click Here to activate user</a></font><br>|
s.ConvertMIME = False
Set stream = s.CreateStream
Call mailbox.Open("SERVER","mail.box")
If mailbox.IsOpen Then
Dim sender As String
Set message = mailbox.CreateDocument
message.Form="memo"
sender = "Admin"
Set body = message.CreateMIMEEntity
Dim mimeHeader As NotesMIMEHeader
Set mimeHeader = body.CreateHeader( "SMTPOriginator" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "Sender" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "INetFrom" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "ReplyTo" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "Principal" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "From" )
Call mimeHeader.SetHeaderVal( sender )
message.Subject = Subject
message.SendTo = SendTo
message.Recipients = SendTo
Dim htmlbeforeurl As String, htmlafterurl As String
htmlbeforeurl = |<font face="Arial" size="2">Hi,<br><br>
There is a new user to activate:<br><br>
Username is: | +doc.Username(0) + |<br>
Email is: | +doc.email(0) + |<br>
<br></font>
|
Call stream.WriteText(htmlbeforeurl)
Call stream.WriteText(tmpURL)
htmlafterurl = |<font face="Arial" size="2"><br>
Best Regards<br>
Admin Team
</font>|
Call stream.WriteText(htmlafterurl)
Call body.SetContentFromText (stream, "text/html;charset=iso-8859-1", ENC_NONE)
Call message.Save( True, False )
End If
s.ConvertMIME = True ' Restore conversion
End Sub
Das Mail wird auch sehr schön versendet ABER:
Es ist dann immer beim öffnen in der Datenbank im Edit mode!!!
Wie bekomme ich es hin, dass das nicht so ist! Das Problem ist nämlich der link funktioniert dann klarerweise nicht!
Wenn ich diese Zeilen weg lasse:
Dim mimeHeader As NotesMIMEHeader
Set mimeHeader = body.CreateHeader( "SMTPOriginator" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "Sender" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "INetFrom" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "ReplyTo" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "Principal" )
Call mimeHeader.SetHeaderVal( sender )
Set mimeHeader = body.CreateHeader( "From" )
Call mimeHeader.SetHeaderVal( sender )
dann ist das mail richtig und ich kann den link sofort anklicken ich hab aber keinen Sender drinnen stehen das will ich auch nicht haben:
Gibt es da eine Lösung für mein Problem?
danke Robert
Ich hab das Script jetzt schon so angepasst dass es jetzt so aussieht:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim GroupDoc As NotesDocument
Dim view As NotesView
Dim body As NotesMIMEEntity
Dim stream As NotesStream
Dim tmpURL As String
Dim item As NotesItem
Dim memo As NotesDocument
Dim htmlbeforeurl As String, htmlafterurl As String
Dim mailbox As New NotesDatabase("","")
Dim URL As String
Dim SendTo As Variant
Dim CopyTo As Variant
Dim sendas As String
Set db = s.CurrentDatabase
Set view = db.GetView ( "($Group)" )
Set GroupDoc = view.GetDocumentByKey ( doc.Sendto(0) ) 'field sendto = Groupfield
SendTo = GroupDoc.Manager
CopyTo = doc.Copyto(0)
sendas = optiondoc.GetItemValue("SendFrom")(0)
URL = "Server/(ActivateUser)?OpenAgent&UserID=" + doc.UserID(0)
s.ConvertMIME = False
Set stream = s.CreateStream
Call mailbox.Open("Server","mail.box")
If mailbox.IsOpen Then
Set memo = mailbox.CreateDocument
With memo
.From = sendas
.SendFrom = sendas
.Form="memo"
.Subject = "Activate User"
.SendTo = SendTo
.CopyTo = CopyTo
.RecNoOutOfOffice = "1" 'Set it so out of office agents don't reply to the message
Set body = .CreateMIMEEntity
Set item = .ReplaceItemValue("Recipients", SendTo)
Call item.AppendToTextList(.CopyTo(0))
htmlbeforeurl = _
|<font face="Arial" size="2">Hi,<br><br>
There is a new user to activate:<br><br>
Username is: | +doc.Username(0) + |<br>
Email is: | +doc.email(0) + |<br>
<br></font>
|
Call stream.WriteText(htmlbeforeurl)
tmpURL = |<font face="Arial" size="2"><a href='| + URL + |'>Click Here to activate user</a></font><br>|
Call stream.WriteText(tmpURL)
htmlafterurl = _
|<font face="Arial" size="2"><br>
Best Regards<br>
Team
</font>
|
Call stream.WriteText(htmlafterurl)
' Ensure the MIME content will be recognized as HTML (Must be after the stream is written)
Call body.SetContentFromText(stream, "text/html",ENC_NONE)
' Call stream.Truncate
.PostedDate = Now()
.ComposedDate = Now()
.DeliveredDate = Now()
.EncryptOnSend = False
Call .Save( True, False )
End With
End If
s.ConvertMIME = True ' Restore conversion
Somit sollte der Content-Type auch passen!
Der link ist einfach nur noch Text!
Mach mal aus
URL = "Server/(ActivateUser)?OpenAgent&UserID=" + doc.UserID(0)
eine richtige URL
URL = "http://Server/(ActivateUser)?OpenAgent&UserID=" + doc.UserID(0)
Martin,
sorry ist nur beim Anonymisieren von mir so gelöscht worden:
Link sieht im Script eh so aus:
URL = "http://Server/bla.nsf/(ActivateUser)?OpenAgent&UserID=" + doc.UserID(0)
Sonst noch einen Tipp?
Sollte das grundsätzlich so funkionieren oder ist da beim Routing oder Servereinstellung irgendetwas zu beachten?
danke Robert