Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mophat am 07.03.06 - 11:28:27

Titel: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 07.03.06 - 11:28:27
Hallo zusammen, wir benötigen für die Firma eine Mailbox (info@mydomain.com) mit der alle die damit arbeiten die Info-Adresse als Absender bekommen.

In Outlook sieht man ja ansonsten "Mitarbeiter1 hat im Auftrag von Info diese Mail gesand"... >:(

Nun gut Ich habe nun eine DB erstellt bei welcher dann beim Versand ein Agent getriggert wird und de untenstehenden Code ausführt:

------------------------------------------------------------------------------------------------------
Sub Initialize
   
   'Main Document
   Dim dbA As New NotesDatabase ( "SERVER1/XXX/YY", "IT\devmailbox.nsf" )
   Dim viewA As NotesView
   Dim docA As NotesDocument
   Set viewA = dbA.GetView( "Unsend Mails" )
   Set docA = viewA.GetFirstDocument
   
   'Sending Document
   Dim s As New notessession
   Dim dbB As NotesDatabase
   Dim Mailbox As NotesDatabase
   Dim docB As NotesDocument
   Dim item As NotesItem
   
   Set dbB = s.CurrentDatabase
   Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
   Set docB = New NotesDocument(Mailbox)
   Set item = docB.GetFirstItem( "Body" )   
   
   ' Values for sending
   docB.SendTo =    docA.GetItemValue( "SendTo" )   
   docB.Recipients =    docA.GetItemValue( "SendTo" )   
   docB.From =    "CN=Dev Mailbox/O=XXX/C=YY"
   docB.form =    "Memo"
   docB.Subject =    docA.GetItemValue( "Subject" )
   docB.Body  =    docA.GetItemValue( "Body" )   
   
   ' Save and close Docs
   Call docA.ReplaceItemValue ("myMailStatus", "is send")
   Call docA.save(True, False)
   Call docB.save(True, False)
   
End Sub
------------------------------------------------------------------------------------------------------

Soweit so gut.

Nun habe ich aber nur noch 2 Probleme:

1. Die Mails werden immer als Plaintext versandt und somit ist auch keine Formatierung etc. möglich
2. Es werden ebenfalls keine Anhänge mitgeschickt (was aber auch mit Punkt 1 zusammenhängt)

Kann mir jemand ein Beispiel zeigen womit ich diesen Agent ermöglich dass er doch quasi Richtext/HTML mit dem Content-Type: multipart/related schickt?

Bin für jede Antwort dankbar  ;D
Dank im Voraus für alle Feedacks
Volkan S.
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: ascabg am 07.03.06 - 11:40:05
Hi,

Schau Dir doch einmal die Methode "CopyItem" der "NotesDocument"-Klasse an.
Vielleicht kannst du damit etwas Anfangen in Bezug auf Dein Body-Feld.

Andreas
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 07.03.06 - 11:44:40
Habs schon versucht klappt leider nicht oder ich bin nicht fähig  :-:
Der Debugger meinte immer dass das Feld nicht auf sich selbst kopiert werden könne (obwohl es ein anderes war).

Ist es möglich anhand meines Codes ein Beispiel für mich zu erstellen?

Danke
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: ascabg am 07.03.06 - 11:56:09
Testen wir mal.


Sub Initialize
   
   'Main Document
   Dim dbA As New NotesDatabase ( "SERVER1/XXX/YY", "IT\devmailbox.nsf" )
   Dim viewA As NotesView
   Dim docA As NotesDocument
   Set viewA = dbA.GetView( "Unsend Mails" )
   Set docA = viewA.GetFirstDocument
   
   'Sending Document
   Dim s As New notessession
   Dim dbB As NotesDatabase
   Dim Mailbox As NotesDatabase
   Dim docB As NotesDocument
   Dim item As NotesItem
   
   Set dbB = s.CurrentDatabase
   Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
   Set docB = New NotesDocument(Mailbox)
   Set item = docA.GetFirstItem("Body")   

   ' Values for sending
   docB.SendTo =    docA.GetItemValue( "SendTo" )   
   docB.Recipients =    docA.GetItemValue( "SendTo" )   
   docB.From =    "CN=Dev Mailbox/O=XXX/C=YY"
   docB.form =    "Memo"
   docB.Subject =    docA.GetItemValue( "Subject" )
   Call docB.CopyItem(item, "Body")
   
   ' Save and close Docs
   Call docA.ReplaceItemValue ("myMailStatus", "is send")
   Call docA.save(True, False)
   Call docB.save(True, False)
   
End Sub
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: umi am 07.03.06 - 12:34:56
Wenn Du den Absender ändern willst, reicht es nicht aus,einfach das From feld zu beschreiben, da dieses beim Abschicken vom Router erstellt wird.
In diesem Forum gibts einige Anleitungen wie man sowas hinbekommt (Mail in Mail.box erstellen, etc)
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: ascabg am 07.03.06 - 12:36:45
@umi,

Was macht denn mophat?

Zitat
Set dbB = s.CurrentDatabase
Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
Set docB = New NotesDocument(Mailbox)

Andreas
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 07.03.06 - 13:31:16
@ascabg

Danke ascabg nun habe seltsame Phänomene.

- Mit nur Text in der Mail wird es immer als Plaintext gesandt.
- Mit Attachment oder einem Bild etc. drin erscheint mal das Attachment als jpg im Outlook und teils kommt diese Fehlermeldung im Notes Client: "Notes error: Note item not found (Body)

Der jetzige Code ist:


Code
Sub Initialize
	
	'Main Document
	Dim dbA As New NotesDatabase ( "SERVER1/XXX/YY", "IT\devmailbox.nsf" )
	Dim viewA As NotesView
	Dim docA As NotesDocument
	Set viewA = dbA.GetView( "Unsend Mails" )
	Set docA = viewA.GetFirstDocument
	
	'Sending Document
	Dim s As New notessession
	Dim dbB As NotesDatabase
	Dim Mailbox As NotesDatabase
	Dim docB As NotesDocument
	Dim item As NotesItem
	
	Set dbB = s.CurrentDatabase
	Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
	Set docB = New NotesDocument(Mailbox)
	Set item = docA.GetFirstItem("Body")   
	
	' Values for sending
	docB.SendTo = 	docA.GetItemValue( "SendTo" )	
	docB.Recipients = 	docA.GetItemValue( "SendTo" )	
	docB.From = 	 "CN=Dev Mailbox/O=XXX/C=YY"
	docB.form = 	"Memo"
	docB.Subject = 	docA.GetItemValue( "Subject" )
                Call docB.CopyItem(item, "Body")	
	
	' Save and close Docs
	Call docA.ReplaceItemValue ("myMailStatus", "is send")
	Call docA.save(True, False)
	Call docB.save(True, False)
	
End Sub


Wozu das hier:

Zitat
Set dbB = s.CurrentDatabase
Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
Set docB = New NotesDocument(Mailbox)

Die Mail wird im Mailrouter direkt erstellt so das die Notes ID des Benutzers keinen Einfluss darauf hat.
Mit dieser Methode umgeht man das im Mailheader und meistens auch in der irgendetwas vom Absender sichtbar ist.

z.B. hans@mycompany.com soll eine Email als chef@mycompany.com schicken, dies soll natürlich nicht nachvollziehbar sein das er dies nicht selbst gesandt hat / steht auch stellvertretend für sales@, info@, promotion@ etc. Adressen.

Falls man die Mail in der DB erzeugt und dann verschickt so ist im Mailheader immer ersichtlich die Absenderadresse desjenigen der die Mail erstellt hat => also z.B. hans@mycompany.com und nicht chef@mycompany.com.
Es erscheint auch in Outloox XP/2003 immer beim Absender: Diese Nachricht wurde von hans@mycompany.com im Auftrag von chef@mycompany.com gesendet"  >:(

Daher diese Aktion, für Textnachrichten geht es ja nur bei Attachments scheint dies nicht richtig zu funkionieren.

thx
Volkan
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: ascabg am 07.03.06 - 13:42:17
Kleine Frage.

Ist denn sichergestellt, dass "DocA" immer ein Feld "Body" hat?

Andreas
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 07.03.06 - 13:45:22
Ja die 2 Formulare sind identisch, das erste dient nur als Vorlage welches dann beim erstellen der Mail die Feldinhalte kopiert.

Hat nur folgende Felder:

- SendTo (Text)
- Subject (Text)
- Body (Richtext)
- myMailStatus (Text)

mehr nicht.
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 08.03.06 - 09:05:52
Kann mir keiner helfen?  :'(
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: umi am 08.03.06 - 09:13:00
Hast du schon mal geprüft ob das Item überhaupt vorhanden ist?
if item is noting then
print "Da fehlt der Körper!"
end if
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 15.03.06 - 09:33:04
Bei der Abfrage ob da was ist bekomme ich die Meldung: "Type mismatch" bei "If item Is noting Then"


Code
...
Set docB = New NotesDocument(Mailbox)
Set item = docA.GetFirstItem("Body")   

If item Is noting Then
	Print "Da fehlt der Körper!"
End If

' Values for sending
docB.SendTo = 		docA.GetItemValue( "SendTo" )	
docB.Recipients = 	docA.GetItemValue( "SendTo" )	

Ich habe jetzt keinen Ansatz mehr wie ich dem Mail Doc beibringen soll ein Attachment mitzuschicken...  :-:

Der nicht mehr weiterkommenden Volkan  ???

Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: DerAndre am 15.03.06 - 09:53:00
Moin.

Schreib mal Nothing anstatt noting.

Gruss

André
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: Thomas Schulte am 15.03.06 - 09:58:22
Man kann das Rad auch immer wieder neu erfinden:

http://www.automatedlogic.com/domblog.nsf/dx/DominoTeamMailbox
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 15.03.06 - 10:15:50
@Thomas Schulte

Danke aber im Outlook erscheint mit der Team Mailbox wieder "benutzer@mydomain.com wurde gesendet im Auftrag von sales@mydomain.com".

Genau das versuche ich hier zu verhindern.

Das heisst, wenn jemand für sales@mydomain.com eine Mail verschickt dann soll nirgends (auch nicht im Mailheader) die Mailadresse vom Mitarbeiter drin stehen sondern nur die vom Sales.

Ansonsten eine sehr gute DB  ;D

@DerAndre

Habe auf Nothing geändert (sorry, schreibfehler), nun kommt er aber mit der Meldung: "Notes error: Note item not found (Body)" bei der Zeile "Call docB.CopyItem(item, "Body")"

Ne Ahnung?
Danke

Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: Barbara am 15.03.06 - 12:25:19
Hallo,
hatte eben erst so was ähnliches. nach meinem Verständnis brauchst du Richtextitems für die Attachements. Hast aber dein Item nur als Notesitem deklariert. Probier' mal

'Main Document
   Dim dbA As New NotesDatabase ( "SERVER1/XXX/YY", "IT\devmailbox.nsf" )
   Dim viewA As NotesView
   Dim docA As NotesDocument
   Set viewA = dbA.GetView( "Unsend Mails" )
   Set docA = viewA.GetFirstDocument
   
   'Sending Document
   Dim s As New notessession
   Dim dbB As NotesDatabase
   Dim Mailbox As NotesDatabase
   Dim docB As NotesDocument
   Dim item As Notesrichtextitem
   Set dbB = s.CurrentDatabase
   Set Mailbox = s.GetDatabase(dbB.Server, "mail.box")
   Set docB = New NotesDocument(Mailbox)
   Set item = docA.GetFirstItem("Body")   
   
   ' Values for sending
   docB.SendTo =    docA.GetItemValue( "SendTo" )   
   docB.Recipients =    docA.GetItemValue( "SendTo" )   
   docB.From =    "CN=Dev Mailbox/O=XXX/C=YY"
   docB.form =    "Memo"
   docB.Subject =    docA.GetItemValue( "Subject" )
                'Call docB.CopyItem(item, "Body")
                Set Body=New NotesRichTextItem( docB,"Body" )   
                Call Body.AppendRTItem(item )
   
   ' Save and close Docs
   Call docA.ReplaceItemValue ("myMailStatus", "is send")
   Call docA.save(True, False)
   Call docB.save(True, False)

Gruß
Barbara
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: Barbara am 15.03.06 - 12:39:47
geht auch:

If item.Type= RICHTEXT Then   
         Call item.CopyItemToDocument( docB, "Body" )
      End If
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: mophat am 15.03.06 - 13:10:35
@Barbara

Danke, Bilder werden jetzt als Anhang mitgesendet nur leider nicht andere Dateitypen wie PDF, XLS usw???

In der Nachricht steht dann im Outlook "(See attached file: Test Datei.xls)", nur der Anhang ist nicht da und es ist auch kein Base64 in Header enthalten.

 :-:
Titel: Re: Absenderkennung ändern und Richtext bzw. Anhänge mitschicken
Beitrag von: Barbara am 15.03.06 - 13:23:12
und wenn du den Anhang löst, um ihn anschließend in docB wieder einzufügen?
Schau mal in der Notesembeddedobject class nach. Muss jetzt leider weg.

Barbara