Jump to content
BrianTFC

Send attchement as PDF in an Email

Recommended Posts

BrianTFC

All,

 

I found the really cool lisp routine to send an AutoCAD drawing as an attachment in an Email and was wondering if it could be modified to send a PDF instead.

 

(defun c:eMail (/ _catch file outlook email)
 ;; Using Outlook, eMail selected object(s) in a temporary DWG file
 ;; Many thanks to Ron Perez (ronjonp) for the Outlook example ([url]http://www.theswamp.org/index.php?topic=26953.msg324794#msg324794[/url])
 ;; Alan J. Thompson, 03.28.11
 (vl-load-com)
 (defun _catch (f a) (not (vl-catch-all-error-p (vl-catch-all-apply f a))))
 (if
   (and
     (or (ssget "_I") (prompt "\nSelect object(s) to eMail: ") (ssget))
     (setq file (vl-filename-mktemp "" nil ".dwg"))
     (_catch 'vla-WBlock
             (list (cond (*AcadDoc*)
                         ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
                   )
                   file
                   (vla-get-activeselectionset *AcadDoc*)
             )
     )
     (setq outlook (vlax-get-or-create-object "Outlook.Application"))
     (setq email (vlax-invoke-method outlook 'CreateItem 0))
     (_catch 'vlax-put (list email 'Subject (strcat "Emailing: " (vl-filename-base file) ".dwg")))
     (_catch 'vlax-invoke (list (vlax-get email 'Attachments) 'Add file))
   )
    (progn (princ "\nOutlook active...")
           (princ)
           (vlax-invoke email 'Display :vlax-true)
           (vl-file-delete file)
    )
 )
 (foreach x (list email outlook) (and x (vlax-release-object x)))
 (princ)
)

 

Thanks Brian

Share this post


Link to post
Share on other sites
Grrr

Use ronjonp's subfunction from the provided link:

;; Usage:
; (rjp-OutlookMessage
;  "johndoe@nowhere.com;johndoewife@nowhere.com"                         ;; email address (multiple separated by semicolon)
;  "Test Email"                                                          ;; Subject
;  '("C:\\test\\file1.txt" "C:\\test\\file2.txt" "C:\\test\\file3.txt")  ;; Attachments as a list of strings
;  "Nothing to read here :)"                                             ;; Text in body of email
;  nil                                                                   ;; nil will open email to edit...T will send email in the background
; )
(defun rjp-OutlookMessage (To Subject AttachmentList Body Send / objMail objOL)
 (and 
   (setq objOL (vlax-get-or-create-object "Outlook.Application")) 
   (setq objMail (vlax-invoke-method objOL 'CreateItem 0)) 
   (progn
     (vlax-put objMail 'To To)
     (vlax-put objMail 'Subject Subject)
     (vlax-put objMail 'Body Body)
     (foreach file AttachmentList (vl-catch-all-apply 'vlax-invoke (list (vlax-get objMail 'Attachments) 'Add file)) )
     (if send (vlax-invoke objMail 'Send) (vlax-invoke objMail 'Display :vlax-true) )
     (vlax-release-object objOL)
     (vlax-release-object objMail)
   ); progn
 ); and
 (princ)
); defun rjp-OutlookMessage

 

I just modified the formatting per my own taste.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×