Here's another tip I saw using the Scripting.FileSystemObject:
https://www.rondebruin.nl/win/s1/outlook/signature.htm
On 12/4/2019 7:16 AM, Dennis Schuette wrote:
Try .GetInspector(). See my code below:
**Outlook automation
**example from Ted Roche: C:\VFP_Extras\Outlook_Automation\ROC147 Automating
Outlook with Visual FoxPro.mht
**Hyperlink 'file:' suggested by Fred Taylor
**.GetInspector, lcSig suggested by Fred Taylor 10/1/2010
LOCAL loOutlook as Outlook.Application, ;
loNameSpace as Outlook.NameSpace, ;
loFolder as Outlook.MAPIFolder, ;
loMailItem as Outlook.MailItem
TRY
loOutlook = CREATEOBJECT("Outlook.Application")
CATCH
MESSAGEBOX("Sorry, Outlook.Application is not
available.",0+16,'Outlook.Application not available')
ENDTRY
IF TYPE("loOutlook")<>"O"
MESSAGEBOX("Sorry, loOutlook is not an Object.",0+16,'loOutlook not an
Object')
endif
local lcTO,lcCC,lcBCC
store '' to lcTO,lcCC,lcBCC
lcTo = [[email protected]]
lcTo = CHRTRAN(lcTo, [,] , [;]) && change commas to semicolons,
comma separators cause Outlook throw an error
lcCC = CHRTRAN(lcCC, [,] , [;]) && Outlook errorcode:
lcBCC = CHRTRAN(lcBCC, [,] , [;]) && Error# 1429, OLE
IDispatch exception code 4096 from Microsoft Outlook: Outlook does not recognize one or
more names. ..
loNamespace = loOutlook.GetNamespace("MAPI")
loFolder= loNamespace.GetDefaultFolder(4) && 3=Deleted Items,
4=Outbox, 5=Sent Items, 6=Inbox, 9=Calendar, 10=Contacts, 11=Journal, 12=Notes, 13=Tasks
loMailItem = loFolder.Items.Add()
WITH loMailItem
.GetInspector() && Should load
your default signature (among other things it does to your Mail item)
lcSig = .HtmlBody && MUSt use
HtmlBody if graphics in sig
.SentOnBehalfOfName = '[email protected]' && From, see:
http://support.microsoft.com/kb/232309
.TO = lcTO
.CC = lcCC
.BCC = lcBCC
.Subject = 'subject line'
.Body = 'some text'
lcFile = 'somepath\somefile.ext'
IF FILE(lcFile)
.Attachments.Add( lcFile)
.HtmlBody= ALLTRIM( .HtmlBody) + CHR(13) + lcSig
if pcDevelopment = "Y"
.Display()
else
.Send()
endif
ENDIF
ENDWITH
Customized Business Services, LLC (928) 580-6352
Dennis Schuette Primary:
[email protected]
49 NW 130 Avenue Alternate:
[email protected]
Great Bend, KS 67530
-----Original Message-----
From: ProfoxTech [mailto:[email protected]] On Behalf Of MB Software
Solutions, LLC
Sent: Tuesday, December 03, 2019 10:17 PM
To: [email protected]
Subject: Programatically saving the Outlook signature when using automation code
Problem: need to preserve Customer's email signature in Outlook automation
code. Tech: VFP9SP2 app using the latest Outlook client.
This is an update to the 8/21/2019 thread I started about using Outlook to
create an email with file attachments. Got that code working (see
below) but now need to find a way to preserve the customer's Outlook email
signature. As the code is below, it creates a blank email and does NOT use
their signature. I'm going to research this with fresh eyes tomorrow but
wanted to throw this out in case others could chime in.
* start outlook
LOCAL oOutlook as Outlook.Application, oNamespace as
Outlook.NameSpace, oMailItem as Outlook.MailItem, lcFilename as String, lcRange
as String, llOK as Logical, lcDir as String
LOCAL oRecipient as Outlook.Recipient
oOutlook = CREATEOBJECT("Outlook.Application")
#DEFINE olFolderDisplayNormal 0
#DEFINE olMailItem 0
#DEFINE olCC 2
#DEFINE olBCC 3
#DEFINE olOriginator 0
#DEFINE olTo 1
oNameSpace = oOutlook.GetNameSpace("MAPI")
oExplorer =
oOutlook.Explorers.Add(oNameSpace.Folders[1],olFolderDisplayNormal)
oMailItem = oOutlook.CreateItem(olMailItem)
WITH oMailItem
.Subject = ALLTRIM(this.txtSubject.Value)
.Body = ALLTRIM(this.edtBody.Value)
*** mjb 10/21/2019 - added defensive coding for L vs. N and empty
too
IF ((VARTYPE(this.chkEmail.Value)="L" AND
this.chkEmail.Value) OR (VARTYPE(this.chkEmail.Value)="N" AND
this.chkEmail.Value = 1)) AND NOT EMPTY(this.txtEmail.Value) THEN
.Recipients.Add(ALLTRIM(this.txtEmail.Value))
ENDIF
*** mjb 10/21/2019 - added CC
IF ((VARTYPE(this.chkSRep.Value)="L" AND
this.chkSRep.Value) OR (VARTYPE(this.chkSRep.Value)="N" AND this.chkSRep.Value
= 1)) AND NOT EMPTY(this.txtSalesRepEmail.Value) THEN
oRecipient =
.Recipients.Add(ALLTRIM(this.txtSalesRepEmail.Value))
oRecipient.Type = olCC
ENDIF
* first add the built PDF from MergeDocuments above
IF liCnt > 0 THEN
.Attachments.Add(lcFile)
ENDIF && liCnt > 0
* any non-PDFs to attach?
SELECT curEmailThese
SCAN FOR UPPER(JUSTEXT(cfilename)) <> "PDF"
.Attachments.Add(ADDBS(ALLTRIM(curEmailThese.cpath))+ALLTRIM(curEmailThese.cfilename))
ENDSCAN
.Display() && Save()
*.Send()
ENDWITH
[excessive quoting removed by server]
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: https://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: https://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message:
https://leafe.com/archives/byMID/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.