0

I want to be able to send an attachment file just by dropping it on a script.

I've found this one that sends the file (it works for me):

Set fso=CreateObject("Scripting.FileSystemObject")
strSMTP="smtp.gmail.com"
strSubject="mail@gmail.com"
strSubject2="Attachment file"
strBody="-"
strAttach="FILEPATH"
If fso.FileExists(strAttach) then
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465   
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1   
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mail@gmail.com"   
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"   
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1   
.Update
End With
With iMsg
Set .Configuration = iConf
.To = "mail2@gmail.com"
.CC = ""
.BCC = ""
.From = "mail1@gmail.com"
.Subject = strAttach
.TextBody = strBody
.AddAttachment strAttach
.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Else
MsgBox "The specified attachment does not exist"
End if

What I need is a modification to this script that allows me to change the 6th line strAttach="FILEPATH" with the path and the extension of the file that im dropping on it and then execute the "send mail script".

Found this two links related to my question, but I don't know how to use them, hope these can help you too. How to get the fully qualified path for a file in VBScript? http://vba-tutorial.com/parsing-a-file-string-into-path-filename-and-extension/

The first one just shows the filepath and the extension on a new window, but i need it to be overwritten on the 6th line. Could someone help me? im not a programmer, just want to be able to send the files to my own mail because i need to print them later on another computer.

Sorry for my english. Im not a native speaker. Thanks in advance!

Community
  • 1
  • 1

1 Answers1

0

Use Arguments Property (WScript Object):

The Arguments property contains the WshArguments object (a collection of arguments). Use a zero-based index to retrieve individual arguments from this collection.

Set fso=CreateObject("Scripting.FileSystemObject")
strSMTP="smtp.gmail.com"
strSubject="mail@gmail.com"
strSubject2="Attachment file"
strBody="-"

''''''''''''''''''''''''''''''''''' strAttach="FILEPATH"
Set objArgs = WScript.Arguments
For ii = 0 to objArgs.Count - 1
    SendMyMail fso.GetAbsolutePathName(CStr( objArgs( ii)))
Next

Sub SendMyMail( ByVal strAttach)
  If fso.FileExists(strAttach) then
      Set iMsg = CreateObject("CDO.Message")
      Set iConf = CreateObject("CDO.Configuration")
      iConf.Load -1 ' CDO Source Defaults
      Set Flds = iConf.Fields
      With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465   
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1   
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mail@gmail.com"   
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"   
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1   
        .Update
      End With
      With iMsg
        Set .Configuration = iConf
        .To = "mail2@gmail.com"
        .CC = ""
        .BCC = ""
        .From = "mail1@gmail.com"
        .Subject = strAttach
        .TextBody = strBody
        .AddAttachment strAttach
        .Send
      End With
      Set iMsg = Nothing
      Set iConf = Nothing
  Else
      MsgBox strAttach & vbCrLf & "The specified attachment does not exist"
  End if
End Sub

Should work

Please check Paul Sadowski's article Sending email with CDO to simplify your code.

JosefZ
  • 28,460
  • 5
  • 44
  • 83