Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Kod] SendToAll czyli wyślij maila do wszystkich jednym kliknięciem!


Rekomendowane odpowiedzi

Opublikowano

Męczy Cię wchodzenie na pocztę, logowanie się i mozolne dodawanie codziennie tych samych odbiorców? Teraz możesz to zmienić!

 

Przejdźmy od razu do kodu i wyjaśnień:

 

 


#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <SMTP.au3>
#include <inet.au3>
#Include <File.au3>

Global $ClearLogAfterEmail, $GmailUser, $GmailPass, $ToEmail ;Deklaracja zmiennych..jakichś...
Global $plik=0

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("SendToAll", 625, 455, 443, 195)
$Tab1 = GUICtrlCreateTab(3, 3, 619, 451)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("SendToAll")
$Label1 = GUICtrlCreateLabel("Temat:", 15, 36, 37, 17)
$Label2 = GUICtrlCreateLabel("Tekst:", 18, 60, 34, 17)
$Input1 = GUICtrlCreateInput("", 57, 33, 184, 21)
$Edit1 = GUICtrlCreateEdit("", 18, 81, 323, 332, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
$List1 = GUICtrlCreateList("", 354, 81, 259, 331)
$Label3 = GUICtrlCreateLabel("Odbiorcy:", 354, 63, 79, 17)
$Button1 = GUICtrlCreateButton("Dodaj odbiorców", 417, 414, 90, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Wyslij do wszystkich", 510, 414, 105, 25, $WS_GROUP)
$errory=GUICtrlCreateLabel("",20,415,320,55)



$TabSheet2 = GUICtrlCreateTabItem("Opcje")
$Input2 = GUICtrlCreateInput("", 75, 72, 145, 21)
$Label4 = GUICtrlCreateLabel("Login:", 39, 75, 33, 17)
$Input3 = GUICtrlCreateInput("", 75, 99, 145, 21)
$label7= GUICtrlCreateLabel("Nadawca: ",23,130,50,17)
$input4 = GUICtrlCreateInput("",75,125,145,21)
$Combo1 = GUICtrlCreateCombo(" ", 75, 152, 145, 25)
GUICtrlSetData(-1, "poczta.o2.pl|pop3.wp.pl|poczta.interia.pl|smtp.gmail.com")
$Label5 = GUICtrlCreateLabel("Hasło:", 39, 105, 36, 17)
$Label6 = GUICtrlCreateLabel("STMP:", 39, 155, 35, 17)
$Button3 = GUICtrlCreateButton("Zapamiętaj", 228, 150, 87, 25, $WS_GROUP)
$kontakt=GUICtrlCreateLabel("Kontakt z Autorem",525,435,100,25)
GUICtrlSetFont($kontakt,Default,400,4)
GUICtrlSetColor($kontakt,0x0000ee)

GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)

;~ for $i=0 to 255
;~ WinSetTrans("SendToAll","",$i)
;~ Sleep(1)
;~ Next

#EndRegion ### END Koda GUI section ###
GUICtrlSetTip($input2,"Login czyli pełny adres mail. Np.: [email protected] ",' ',2) ;podpowiedz po najechaniu na kontrolke
GUICtrlSetTip($input3,"Haslo do Twojego meaila ",' ',2)
GUICtrlSetTip($input4,"Pojawi sie w polu nadawca. Np: SklepJakis itd. ",' ',2)
GUICtrlSetTip($combo1,"Jesli login jest w poczcie wp.pl wybierz pop3.wp.pl i analogicznie do reszty ",' ',2)
GUICtrlSetTip($button3,"Zapamieta ustawienia w pliku value.ini ",' ',2)

if IniRead("value.ini","Wartosci","Dane",0)=0 Then
GUICtrlSetState($button1,$GUI_DISABLE)
GUICtrlSetState($button2,$GUI_DISABLE)
EndIf



While 1
$nMsg = GUIGetMsg()
Switch $nMsg

Case $GUI_EVENT_CLOSE
Exit
Case $button1
odbiorcy()
Case $button2
slij()
case $button3
zapis()
case $kontakt
ShellExecute("http://www.mpcforum.pl/user/250347-wojtek333314/")
EndSwitch

WEnd


func odbiorcy();funkcja wczytujaca plik z odbiorcami.
Global $plik=FileOpenDialog("Wybierz plik txt",@scriptDir,'Pliki tekstowe (*.txt)')
for $i= _FileCountLines($plik) to 1 step -1
GUICtrlSetData($list1,FileReadLine($plik, $i) & "|")
Next
GUICtrlSetData($label3,"Odbiorcy("& _FileCountLines($plik) &"):")
EndFunc

func slij();funckja wysylajaca maile
$GmailUser = IniRead("value.ini","Wartosci","login",'0') ;Adres e-mail nadawcy(jednoczesnie uzytkownik)
$GmailPass = IniRead("value.ini","Wartosci","haslo",'0') ;Hasło do adresu e-mail nadawcy
$StmpServer = IniRead("value.ini","Wartosci","Stmp",'0') ;Adres serwera stmp nadawcy
$nadawca= IniRead("value.ini","Wartosci","nadawca",'0') ;to co pojawi sie w polu nadawcy
$Tresc = GUICtrlRead($edit1)
$temat=GUICtrlRead($input1)

if $plik=1 Then
MsgBox(0,'','Dodaj odbiorców!')
Return
Else
$linie=_FileCountLines($plik);liczba linni we wczytanym pliku
EndIf


for $i=1 to $linie step 1 ;petla aby zmienia odbiorce
$ToEmail = FileReadLine($plik,$i);zmiana odbiorcy $ToEmail bo nizej w funkcji InetSMTP jest to wymagane 

_INetSmtpMailCom($StmpServer, $Nadawca, $GmailUser, $ToEmail, $GmailUser, $GmailPass, $Temat, $Tresc);mozna dorzucic jeszcze jeden argument z załącznikiem
if @error Then
GUICtrlSetData($errory,"")
Sleep(300)
GUICtrlSetData($errory,"Blad nr."&@error&" do: "&FileReadLine($plik,$i)&@CRLF&"Sprawdz czy podałes dobre dane logowania oraz czy odbiorca istnieje")
GUICtrlSetColor($errory,0xff0000)
Else
GUICtrlSetData($errory,"")
GUICtrlSetData($errory,"Wyslano: "&FileReadLine($plik,$i))
GUICtrlSetColor($errory,0xcc003234)
EndIf
ToolTip(($i/$linie)*100&" %") ;tooltip ile procent wykonano

Next
ToolTip("")
EndFunc



func zapis() ;dane do pliku z zakladki opcje
IniWrite("value.ini","Wartosci","login",GUICtrlRead($input2))
IniWrite("value.ini","Wartosci","haslo",GUICtrlRead($input3))
IniWrite("value.ini","Wartosci","stmp",GUICtrlRead($combo1))
IniWrite("value.ini","Wartosci","nadawca",GUICtrlRead($input4))
IniWrite("value.ini","Wartosci","Dane",1)
GUICtrlSetState($button1,$GUI_enABLE)
GUICtrlSetState($button2,$GUI_enABLE)

GUICtrlSetData($button3,"SAVED!")
GUICtrlSetColor($button3,0xFF0000)
Sleep(700)
GUICtrlSetData($button3,"Zapamiętaj")
GUICtrlSetColor($button3,Default)
EndFunc

 

 

 

Najpierw musimy skonfigurować program czyli:

-podajemy swój adres meail z którego będziemy rozsyłać wiadomość

-podajemy hasło

-w pole Nadawca wpisujemy to co odbiorca zobaczy przy naszym adresie mail

-wybieramy serwer SMTP. Jesli login jest na poczcie wp wtedy wybieramy z listy odpowiadajacy mu adres. Narazie jest dla Gmail, O2, Interii, oraz WP jednak jak chcecie abym dodal cos jeszcze to piszczie.

-Klikamy zapamiętaj aby program pamiętał nasze dane .

 

Następnie przechodzimy do wysyłania:

Teraz wpisujemy to co chcemy wysłać czyli temat i treść maila. Wybieramy dodaj odbiorców i wskazujemy plik txt w którym są maile .Klikamy wyślij do wszystkich i gotowe! :)

Plik z odbiorcami ma wyglądać następująco:

[email protected]
[email protected]
[email protected]
itd. w kazdej linni oddzielny odbiorca

 

Aby uruchomić skrypt jest potrzebny UDF SMTP . Oto on w paczce z kodem:

 

 


#cs
I did nor wrote this script, i downloaded it from a user on the AutoIt official forums.
I simple edited a small part of it.
~Marlo
#ce

#Include<file.au3>
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
#Include<file.au3>

Global $oMyRet[2]

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Username, $s_Password, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $IPPort=465, $ssl=1)
$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])
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
$i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
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
$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
; Sent the Message
$objEmail.Send
if @error then
SetError(2)
return $oMyRet[1]
EndIf
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 ;==>MyErrFunc

 

 

 

 

 

Mam nadzieję,że się komuś przyda :)

  • 5 miesięcy temu...
Opublikowano

Niestety przyjacielu ale twoj program niedziala. Mozesz to naprawic? Oto dowod:

 

 

24373856179576857570.jpg

 

Jest tak z kazdym adresem, niewyslalo ani jednego meila;] Nawet jak wpisalem swoj wlasny meil aby mi wyslalo wyskoczyl ten sam blad, wiec cos tu musi niegrac w skrypcie;(

EXPmIpC.gif

Opublikowano

wygląda na to, ze źle skonfigurowałeś dane e-maila z którego miało rozsyłać pocztę

Oddajcie minusy! :(

Opublikowano

co ty zartujesz sobie? Myslisz ze nie potrafie wpisac swojej nazwy meila oraz hasla, nadawcy oraz zaznaczyc pop.gmail.com:/ lol , teraz wybacz ale zglosze sie do tamtego aby mi napisal za pieniadze:/ <zenada>

Tak sie sklada ze mam na kazdym z ponadym kont pocztowych i na zadnym niedziala:/ na wp, na interi:/

EXPmIpC.gif

Opublikowano

Ok to podaj dane z zakładki programu "Opcje" prócz hasła i powiem Ci gdzie masz błąd bo jakimś sposobem mi działa wszystko :)

Opublikowano

Adres gmail SMTP nie chce działać , w każdym razie do czasu zanim wyeliminuję ten błąd najlepiej wysyłaj z o2 , pamiętaj ,że login to pełny adres mail czyli z @o2.pl

 

Ok działa , poprawione . Błąd był w adresie serwera, podałem pop3 a nie smtp.

Zupdatowany kod.

 

Jeżeli nie wiesz jak skompilować to do .exe to po prostu odpal program wpisz dane do logowania, nacisnij 'zapamiętaj' , następnie w folderze gdzie masz ten program utworzy się plik "value", otwórz a w wartość STMP wpisz

 smtp.gmail.com

Opublikowano

Skompilowałem ładnie do .exe, i śmiga jak powinno :)

 

Na początku miałem problem z smtp.au3 ale dałem rade ;)

 

Ps. Mój pierwszy skompilowany skrpt :D

Opublikowano

No wkoncu to skompilowalem dzieki UP. Jeszcze raz ci dziekuje za pomoc, a wstawiajacemu za zajebiste dzielo , cos pieknego:)

EXPmIpC.gif

Opublikowano

A co mi tam, wstawie konkretny poradnik jak to skompilować :P

 

Czyli tak, kopiujesz ten drugi kod co podał w temacie, robisz nowy plik, nazywasz go smtp.au3 i wklejasz ten kod.

 

Plik kopiujesz Do: Dysk lokalny -->program files --> AutoIt3 --> Include

 

Teraz kopiujesz ten pierwszy kod, robisz plik o nazwie wysylacz.au3, i wklejasz do pliku ten pierwszy kod.

 

Odpalsz plik Aut2exe.exe

 

W pierwszej tabeli wskazujesz na plik wysylacz.au3

W drugiej tabeli wskazujesz gdzie ma znaleźć się skompilowany plik .exe

 

Klikasz na dole Convert i gotowe :)

  • 3 tygodnie później...
Opublikowano

@up twój post nic nie wnosi do tematu, jak chcecie załatwiać swoje sprawy to na pw

 

a co do tematu: nie wiem, ale ten wysylacz raz działa, raz nie tzn. wyśle pierwsze 2 maile, a później pisze że nieprawidłowy e-mail, ani nic - może to przez ograniczenia na poczcie, nie wiem

  • 3 tygodnie później...
Opublikowano

sorry za odkop,

Wojtek, jest mały problem, po wyłączeniu skryptu kiedy zpaisał się plik value.ini i następnym otwarciu programu dane się nie wczytują :D

Opublikowano

Wczytują się ale nie są wpisywane w pole opcje ;)

Możesz być pewien ,że znajdą się w pamięci programu :)

 

PS: przed chwilą sprawdziłem :)

Opublikowano

Podobny + obsluguje załączniki ;)

Kilka includow moze byc niepotrzebnych... napisalem to baaaardzo dawno temu. ;) (i nie mam zamiaru nic poprawiac - wrzucam jako taka mala "ciekawostke")

 

 

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#Include <File.au3>
#Include <String.au3>
#Include <GuiListBox.au3>
#Include <GuiButton.au3>
#include <SmtpMailer.au3>
#include <Date.au3>
$Form1 = GUICreate("Mailer", 833, 480, 192, 124)
$nagl = GUICtrlCreateInput("", 88, 40, 329, 21)
guictrlsetdata(-1,"temat")
$temat = GUICtrlCreateInput("", 88, 72, 329, 21)
$Label1 = GUICtrlCreateLabel("Temat:", 8, 72, 37, 17)
$zalacznik=GUICtrlCreateInput("", 88, 104, 329, 21)
$gzalaczplik_but = GUICtrlCreateButton("Załącz Plik", 424, 104, 75, 25, $WS_GROUP)
$tekst = GUICtrlCreateEdit("", 32, 176, 449, 273)
$Label2 = GUICtrlCreateLabel("Tekst:", 32, 152, 34, 17)
$Wyslij = GUICtrlCreateButton("Wyslij", 704, 425, 75, 25, $WS_GROUP)
$Label3 = GUICtrlCreateLabel("Naglowek", 8, 40, 52, 17)
$Label4 = GUICtrlCreateLabel("Załącznik:", 8, 104, 55, 17)
$gLISTA = GUICtrlCreateList("", 520, 152, 177, 305)
$Label5 = GUICtrlCreateLabel("Lista Maili:", 528, 128, 53, 17)
$gzaladuj_but = GUICtrlCreateButton("Załaduj", 704, 152, 75, 25, $WS_GROUP)
$gwyczysc_but = GUICtrlCreateButton("Wyczysc", 704, 264, 75, 25, $WS_GROUP)
$gdodaj_but = GUICtrlCreateButton("Dodaj", 704, 336, 75, 25, $WS_GROUP)
$gusun_but = GUICtrlCreateButton("Usun", 704, 368, 75, 25, $WS_GROUP)
$gzapisz_but = GUICtrlCreateButton("Zapisz", 704, 184, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$s_SmtpServer = "poczta.o2.pl" ; smtp??? address for the smtp-server to use - REQUIRED
$s_FromAddress = "[email protected]" ; ???????address from where the mail should come
$s_CcAddress = "" ; address for cc - leave blank if not needed
$s_BccAddress = "" ; address for bcc - leave blank if not needed
$s_Username = "login" ; ??? username for the account used from where the mail gets sent - REQUIRED
$s_Password = "haslo" ; ??password for the account used from where the mail gets sent - REQUIRED
$IPPort = 465 ; yidabu.com??:Gmail???????
$ssl = 1 ; yidabu.com??:Gmail???????
$zal=""
func czysc_liste()
_GUICtrlListBox_ResetContent($gLISTA)
endfunc
func laduj_liste($lista)
$ilosc = _FileCountLines($lista)
for $i=1 to $ilosc step +1
$line = FileReadLine($lista,$i)
GUICtrlSetData($gLISTA, $line & @CRLF)
If @error = -1 Then
msgbox(0,"Error","Stalo sie cos brzydkiego")
ExitLoop
endif
next
endfunc
func zapisz()
$savefile = FileSaveDialog ("Zapisz jako...", @ScriptDir & "\", "Text (*.txt)" ,2,"lista.txt")
if FileExists ($savefile) = 0 Then
_FileCreate($savefile)
elseif FileExists ($savefile) Then
FileDelete($savefile)
_FileCreate($savefile)
endif
$iloscelementowlisty=_GUICtrlListBox_GetCount($gLISTA)
for $i = 0 to $iloscelementowlisty-1 step +1
$linialistydozapisu=_GUICtrlListBox_GetText($gLISTA, $i)
_FileWriteToLine ($savefile,$i+1,$linialistydozapisu,1)
next
endfunc
func gzaladuj()
czysc_liste()
laduj_liste(FileOpenDialog("Wybierz liste", @ScriptDir & "\", "Text (*.txt)", 1 + 4 ))
endfunc
func gdodaj()
$gdod=InputBox("Podaj nazwe","Nazwa:")
GUICtrlSetData($gLISTA, $gdod & @CRLF)
endfunc
func gusun()
$wpis = _GUICtrlListBox_GetCurSel($gLista)
if $wpis = -1 then
_GUICtrlListBox_DeleteString($gLISTA,0)
endif
if $wpis <> -1 then
_GUICtrlListBox_DeleteString($gLISTA,$wpis)
endif
endfunc
func gwyczysc()
czysc_liste()
endfunc
func gzapisz()
zapisz()
endfunc
func wysylacz()
$il_test = _GUICtrlListBox_GetCount($gLista)
$wpis = _GUICtrlListBox_GetCurSel($gLista)
if $wpis = -1 then
for $i = 0 to $il_test-1 step +1
$msg=_GUICtrlListBox_GetText($gLISTA,$i)
$s_FromName = guictrlread($nagl)
$s_AttachFiles = guictrlread($zalacznik)
$s_ToAddress = $msg
$s_Subject = guictrlread($temat)
$as_Body = guictrlread($tekst)
sleep(1000)
$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
traytip("Wysłano e-mail",$i+1&" z "&$il_test,300)
next
msgbox (0,"Wysłano!","Maile zostaly wysłane.")
endif
endfunc

func gwyslij()
_FileCreate("Ostatnia.txt")
$iloscelementowlisty=_GUICtrlListBox_GetCount($gLISTA)
for $i = 0 to $iloscelementowlisty-1 step +1
$linialistydozapisu=_GUICtrlListBox_GetText($gLISTA, $i)
_FileWriteToLine (@scriptdir&"\Ostatnia.txt",$i+1,$linialistydozapisu,1)
next
wysylacz()
endfunc
func gzalaczplik()
$zal=GUICtrlSetData($zalacznik,FileOpenDialog("Wybierz liste", @ScriptDir & "\", "Wszystkie pliki (*.*)", 1 + 4 ))
endfunc
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Wyslij
gwyslij()
Case $gdodaj_but
gdodaj()
Case $gusun_but
gusun()
Case $gwyczysc_but
czysc_liste()
Case $gzaladuj_but
gzaladuj()
Case $gzapisz_but
gzapisz()
Case $gzalaczplik_but
gzalaczplik()
EndSwitch
WEnd

 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...