Jump to content

Recommended Posts

Posted

I had some code written by someone a few years ago that open an email form and place a message on it. I would like to use it or similar to open an email with a message (not necessarily send it)

What I like to do is - in the message body - place the file path with dwg name of the current dwg the user is in. That is by far the easy bit. The hard bit is opening up email.

This is the code I have - I use Lotus notes so I have tried to make it suit Lotus notes rather than Outlook.

thanks if you can help!

 

 
(defun C:CreateMail ()
; Who's going to get the mail
(setq recipients_list (list "[email="holsinf@stig.co.nz"]holsinf@stig.co.nz[/email]"))
; What is the subject
(setq subject "Subject of the mail")
; What is the body
(setq body "Body of the mail")
; What are the attachments
(setq attachments_list (list "MyDrawing.dwg"))
;;;(create-email recipients_list subject body attachments_list 1) ; Do send this mail immediately
(create-email recipients_list subject body attachments_list 0) ; Do not yet send this mail
(princ)
)
(defun create-email (recipients_list
subject body
attachments_list email_send
/ acadapp
acaddoc outlookapp
mail_object recipients_collection
attachments_collection
temp ret
item cadz3d_function
)
;; Load the extended AutoLISP functions and ActiveX support
(vl-load-com)
;; Get the application and current document objects
(setq acadapp (vlax-get-acad-object)
acaddoc (vlax-get-property acadapp 'activedocument)
)
;; Get the existing outlook application object
(if
(or (= (setq outlookapp (vl-catch-all-apply 'vlax-get-object (list
"Lotus Notes.Application")));
nil
)
(/= (type outlookapp) 'vla-object)
)
(progn (alert (strcat
"Microsoft Outlook must already be running\n"
"to create and send the email. This will be\n"
"improved in future versions.\n\n"
"Please start Microsoft Outlook and then close\n"
"this dialog box to create the email."
)
)
(setq outlookapp (vl-catch-all-apply 'vlax-get-object (list 
"Lotus notes.Application")))
)
)
(if (= (type outlookapp) 'vla-object)
(if ;; Create new email object
(setq mail_object (vlax-invoke-method outlookapp 'createitem 0))
(if ;; Get the recipients collection
(setq recipients_collection (vlax-get-property mail_object 'recipients))
(progn
;; Add the recipients properties to the email
(foreach item recipients_list
(if (= (type item) 'str)
(vlax-invoke-method recipients_collection 'add item)
)
)
;; Add the subject properties to the email
(if (= (type subject) 'str)
(vlax-put-property mail_object 'subject subject)
)
;; Add the body properties to the email
(if (= (type body) 'str)
(vlax-put-property mail_object 'body body)
)
;; Add the attachements properties to the email
(if
(and (vl-consp attachments_list)
(setq attachments_collection (vlax-get-property mail_object 
'attachments))
)
(foreach item attachments_list
(if (and (setq temp (findfile item)) (vl-file-systime temp))
(vlax-invoke-method attachments_collection 'add temp)
)
)
)
;; If the email_send equals 1 and the recipients_list, subject, and body 
;;;were passed to the
;; function then send the email, otherwise display the email for the user 
;;;to finish
(if (and (= email_send 1)
(vl-consp recipients_list)
;;;subject
;;;body
(/= subject "")
(/= body "")
)
(vlax-invoke-method mail_object 'send)
(vlax-invoke-method mail_object 'display)
)
(setq ret t)
)
(princ "\nCould not get the recipients collection from the new mail item")
)
(princ "\nCould not create a new mail item through Outlook")
)
(princ "\nCould not create a new instance of Outlook")
)
;; Release the objects
(if (and (= (type attachments_collection) 'vla-object)
(= (vlax-object-released-p attachments_collection) nil)
)
(vlax-release-object attachments_collection)
)
(if (and (= (type recipients_collection) 'vla-object)
(= (vlax-object-released-p recipients_collection) nil)
)
(vlax-release-object recipients_collection)
)
(if (and (= (type mail_object) 'vla-object) (= (vlax-object-released-p 
mail_object) nil))
(vlax-release-object mail_object)
)
(if (and (= (type outlookapp) 'vla-object) (= (vlax-object-released-p
outlookapp) nil))
(vlax-release-object outlookapp)
)
(if (and (= (type acaddoc) 'vla-object) (= (vlax-object-released-p
acaddoc) nil))
(vlax-release-object acaddoc)
)
(if (and (= (type acadapp) 'vla-object) (= (vlax-object-released-p
acadapp) nil))
(vlax-release-object acadapp)
)
(princ)
ret
);defun 

  • 1 year later...
Posted

Hi Small Fish,

 

Have you found a solution for this. I have something that might be useful...:)

Posted

Thanks Waybos - no I did not. however our office is ditching Lotus Notes and going with Ms Outlook, so it does not matter now. However thanks for your reply

SF

Posted

Try this in the commandline

Start

Outlook.exe /c ipm.note /m johnsmith@emailaddress.com

And see what happens.

Search for commandline switches for outlook. Then you'll also want to

do a search on - "mailto URL, outlook"

Enjoy!

WB

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...