Adrive Posted June 22, 2010 Posted June 22, 2010 hi i am new here. i hope you guys will welcome me. i want to send some emails, i just read the help file but i think there is nothing about it. maybe someone can help me to convert this VBS to AutoIt Set objMessage = CreateObject("CDO.Message") objMessage.Subject = "Example CDO Message" objMessage.From = "me@my.com" objMessage.To = "test@paulsadowski.com" objMessage.TextBody = "This is some sample message text." objMessage.AddAttachment "c:\temp\readme.txt" objMessage.Send
Tvern Posted June 23, 2010 Posted June 23, 2010 (edited) i am new here. i hope you guys will welcome me. Hi Adrive. Welcome to the forums. Enjoy your stay. As a general rule you'll get the most response here when you try to supply some autoiit code of what you are trying to do. No matter how feeble your attempts might be. I've made a quick translation of your code myself, but it errors at the Send part. $objMessage = ObjCreate("CDO.Message") ;variables are recognised by a '$' at the start With $objMessage ;all the actions in the With...EndWith will be performed on this object .Subject = "Example CDO Message" .From = "me@my.com" .To = "to@me.com" .TextBody = "This is some sample message text." .AddAttachment("C:\temp\readme.txt") ;not 100% sure this syntax is right .Send ;For me this throws an error. EndWith Some documentation indicates that the error could be caused by non-existing e-mail adresses, but it seems odd that would cause a hard crash. I am in a bit of a rush to leave, but perhaps others offer a solution. Tom Edited June 23, 2010 by Tvern
Juvigy Posted June 23, 2010 Posted June 23, 2010 This is for outlook.There are SMTP examples too - use the search Local $olMailItem = 0 Local $olFormatRichText = 3 Local $olImportanceLow = 0 Local $olImportanceNormal = 1 Local $olImportanceHigh = 2 Local $olByValue = 1 Local $olFormatHTML = 2 Local $olFormatPlain = 1 $oOApp = ObjCreate("Outlook.Application") $oOMail = $oOApp.CreateItem ($olMailItem) $oOMail.Save With $oOMail .To = ("test2@hp.com") .Cc = ("test@hp.com") .Subject = $subj .BodyFormat = $olFormatHTML .Importance = $olImportanceNormal .HTMLBody = "asdasdasdasd" .attachments.add ($FileName3) .Send EndWith $oOApp=0
sahsanu Posted June 23, 2010 Posted June 23, 2010 i am new here. i hope you guys will welcome me. i want to send some emails, i just read the help file but i think there is nothing about it.Welcome Adrive.First, take a look to help file and search for _INetSmtpMail.If you need to send attachments, take a look to _INetSmtpMailCom UDF and you will have two things:1.- You will know how to convert your VBS script to AutoIt.2.- You will have an easy UDF to send mails with attachments without pull your hair Cheers,sahsanu
Adrive Posted June 23, 2010 Author Posted June 23, 2010 Thanks for the very warm Welcome, i am beginer but i shall try to learn AutoIt because it seems t be easy and good for daily automation works. i used _INetSmtpMailCom UDF but it's not working for me. here is the error which i am getting. >"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Documents and Settings\Adrive\Desktop\AutoIt\email.au3" ### COM Error ! Number: 80020009 ScriptLine: 92 Description:The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available >Exit code: 0 Time: 15.419 here is what i tried expandcollapse popup; ;################################## ; Include ;################################## #Include<file.au3> ;################################## ; Variables ;################################## $SmtpServer = "smtp.mail.yahoo.com" ; address for the smtp-server to use - REQUIRED $FromName = "Adrive" ; name from who the email was sent $FromAddress = "Adrive_2531@yahoo.com" ; address from where the mail should come $ToAddress = "Natraj550@yahoo.com" ; destination address of the email - REQUIRED $Subject = "Userinfo" ; subject from the email - can be anything you want it to be $Body = "Hello" ; the messagebody from the mail - can be left blank but then you get a blank mail $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed $CcAddress = "" ; address for cc - leave blank if not needed $BccAddress = "" ; address for bcc - leave blank if not needed $Importance = "Normal" ; Send message priority: "High", "Normal", "Low" $Username = "Adrive_2531" ; username for the account used from where the mail gets sent - REQUIRED $Password = "**********" ; password for the account used from where the mail gets sent - REQUIRED $IPPort = 25 ; port used for sending the mail $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS ;~ $IPPort=465 ; GMAIL port used for sending the mail ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS ;################################## ; Script ;################################## Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc) EndIf ; ; The UDF Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF) $objEmail.AddAttachment($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 then $IPPort = 25 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $s_Username <> "" Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "High" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" Case "Normal" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" Case "Low" $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" EndSwitch $objEmail.Fields.Update ; Sent the Message $objEmail.Send If @error Then SetError(2) Return $oMyRet[1] EndIf $objEmail="" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func MyErrFunc() $HexNumber = Hex($oMyError.number, 8) $oMyRet[0] = $HexNumber $oMyRet[1] = StringStripWS($oMyError.description, 3) ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF) SetError(1); something to check for when this function returns Return EndFunc ;==>MyErrFun
sahsanu Posted June 23, 2010 Posted June 23, 2010 here is what i tried $Username = "Adrive_2531" ; username for the account used from where the mail gets sent - REQUIRED Change your username from "Adrive_2531" to "Adrive_2531@yahoo.com" and try again.
JadeGolem Posted June 29, 2010 Posted June 29, 2010 Thanks for posting the example code - this is exactly what I was looking for!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now