Jobber med e-post. Den enkleste formen for å sende data til e-post ved hjelp av HTML og PHP Sende meldinger c#

💖 Liker du det? Del lenken med vennene dine

Hallo. Siden grafomanien min utvikler seg, bestemte jeg meg for å legge til en annen artikkel. Artikkelen vil som alltid inneholde eksempler i C#, men en mer eller mindre dyktig VB-spesialist vil enkelt skrive om all koden under VB.NET.

La oss komme i gang, antar jeg

For å sende e-post må vi bruke tre objekter. System.Net.Mail.SmtpClient for å sende meldingen, System.Net.Mail.MailMessage for å presentere meldingen, og System.Net.NetworkCredential for å autorisere.

La oss lage en klient:

Var klient = ny SmtpClient("$Mail-Server-Address$", $Mail-Server-Port$);

Designerreferanse:

SmtpClient(strengvert, int port);

La oss lage en forekomst av MailMessage-klassen:

Var msg = new MailMessage("fra", "til");

La oss nå angi emnet og innholdet i brevet (forresten, alt kan settes i konstruktøren). Og også innlogging og passord for smtp-klienten. Deretter vil vi sende brevet ved å bruke Send-metoden til vårt klientobjekt:

Var klient = ny SmtpClient("smtp.yandex.ru"); var msg = new MailMessage("fra", "til"); msg.Subject = "Min testmelding"; msg.Body = "Hei, min venn! Tenk deg at jeg nettopp skrev et utrolig program for å sende dette meningsløse brevet til deg en milliard ganger bare med flere klikk!"; msg.SubjectEncoding = Encoding.UTF8; msg.BodyEncoding = Encoding.UTF8; // priority msg.Priority = MailPriority.High; // e-posttekst i html? msg.IsBodyHtml = usann; client.Credentials = new NetworkCredential("pålogging", "passord"); klient.Send(melding);

Det er alt. Ikke glem å fylle inn all nødvendig informasjon riktig.


Kommentarer ()

ruslang02 30

CoolHacker, kan jeg låne denne koden av deg for del 3 av nettleseren?

Coolhacker 770 ruslang02 30

Takk, jeg vil bruke den til å sende lenker på e-post
som i FireFox

LetSevI 10 Kommandør for skipet 14. oktober 2013 kl. 19:29

Programmatisk sending e-post ved hjelp av ulike tjenester

Svært ofte må du forholde deg til å sende e-post fra programkode. Du trenger ikke se langt etter eksempler.

Denne artikkelen er et hint og avslører ikke noe nytt, men før jeg skrev den, så jeg lik ut på Internett og ble ganske overrasket over at de nesten overalt tilbyr enten en løsning som ikke fungerer eller er utdatert, eller ganske enkelt er skrevet analfabet.

Det første du ikke bør gjøre basert på disse eksemplene er å bruke System.Web.Mail, som lenge har vært utdatert, og fra og med Visual Studio 2010 kan du ikke engang legge til System.Web-biblioteket uten å vite hele banen til den tilsvarende DLL-filen.
Det foreslås å bruke System.Net-biblioteket i stedet.
bruker System.Net; bruker System.Net.Mail;
Så den enkleste tingen, som også er den viktigste og mest brukte, er å sende et brev fra e-postserveren din der en SMTP-klient er konfigurert. Som du forstår, kan serveren enten være den applikasjonen kjører på, eller en ekstern server som du har rettigheter til å sende brev på uten ytterligere autorisasjon.

Eksempelkode for å sende et brev fra en lokal maskin:
", "[e-postbeskyttet]"))( mm.Subject = "E-postemne"; mm.Body = "E-posttekst"; mm.IsBodyHtml = false; bruker (SmtpClient sc = new SmtpClient("127.0.0.1"))(//Adressen skal være her postserver og port, om nødvendig sc.Send(mm); ) )

Bruke e-posttjenester som Gmail, Yandex, Mail.ru, etc. alt er det samme, bare parametere med autorisasjon legges til.

SMTP-server: smtp.gmail.com
Havn: 587
bruker (MailMessage mm = new MailMessage("Navn ", "[e-postbeskyttet]"))( mm.Subject = "E-postemne"; mm.Body = "E-posttekst"; mm.IsBodyHtml = false; bruker (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-postbeskyttet]", "GmailPassword"); sc.Send(mm); ) )

SMTP-server: smtp.yandex.ru
Havn: 25
bruker (MailMessage mm = new MailMessage("Navn ", "[e-postbeskyttet]"))( mm.Subject = "E-postemne"; mm.Body = "E-posttekst"; mm.IsBodyHtml = usann; bruker (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-postbeskyttet]", "YandexPassword"); sc.Send(mm); ) )

SMTP-server: smtp.mail.ru
Havn: 25
bruker (MailMessage mm = new MailMessage("Navn ", "[e-postbeskyttet]"))( mm.Subject = "E-postemne"; mm.Body = "E-posttekst"; mm.IsBodyHtml = usann; bruker (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(" [e-postbeskyttet]", "MailRuPassword"); sc.Send(mm); ) )
Hvis du har Postkasse på mail.ru-tjenesten slutter på inbox.ru, list.ru eller bk.ru, deretter endres SMTP-serveradressen tilsvarende (smtp.inbox.ru, smtp.list.ru og smtp.bk.ru).

Som du kan se, for å bruke en hvilken som helst annen e-posttjeneste i programmene dine, trenger du bare å finne ut SMTP-serveradressen og -porten, samt autorisasjonsregler.

Det er også viktig å huske at nesten alle tredjeparts e-posttjenester legger begrensninger på antall e-poster som sendes i løpet av en periode.

Tags: e-post, sende brev, smtp

En av de mest populære funksjonene på nettstedet er søknads- eller bestillingsskjemaet, hvorfra dataene sendes via e-post til nettstedets eier. Som regel er slike skjemaer enkle og består av to eller tre felt for dataregistrering. Hvordan lage et slikt bestillingsskjema? Dette krever bruk av HTML-markeringsspråk og språket PHP programmering.

HTML-markeringsspråket i seg selv er enkelt; du trenger bare å finne ut hvordan og hvor du skal plassere visse tagger. Med PHP-programmeringsspråket er ting litt mer komplisert.

For en programmerer er det ikke vanskelig å lage et slikt skjema, men for en HTML-layoutdesigner kan noen handlinger virke vanskelige.

Lag et datainnsendingsskjema i html

Den første linjen vil være som følger

Dette er et veldig viktig element i skjemaet. I den angir vi hvordan dataene skal overføres og til hvilken fil. I dette tilfellet overføres alt ved hjelp av POST-metoden til send.php-filen. Programmet i denne filen må følgelig motta dataene, det vil være i post-arrayet og sende det til den angitte e-postadressen.

La oss gå tilbake til formen. Den andre linjen vil inneholde et felt for å skrive inn ditt fulle navn. Har følgende kode:

Skjematypen er tekst, det vil si at brukeren vil kunne skrive inn eller kopiere tekst hit fra tastaturet. Navnparameteren inneholder navnet på skjemaet. I dette tilfellet er det fio; det er under dette navnet at alt som brukeren skrev inn i dette feltet vil bli overført. Plassholderparameteren spesifiserer hva som skal skrives i dette feltet som en forklaring.

Neste linje:

Her er nesten alt likt, men navnet på feltet er e-post, og forklaringen er at brukeren legger inn e-postadressen sin i dette skjemaet.

Den neste linjen vil være "send"-knappen:

Og den siste linjen i skjemaet vil være taggen

La oss nå sette alt sammen.





La oss nå gjøre feltene i skjemaet obligatoriske. Vi har følgende kode:





Lag en fil som godtar data fra HTML-skjemaet

Dette vil være en fil som heter send.php

I filen, på det første stadiet, må du godta data fra postmatrisen. For å gjøre dette lager vi to variabler:

$fio = $_POST["fio"];
$email = $_POST["email"];

Variablenavn i PHP innledes med et $-tegn, og et semikolon er plassert på slutten av hver linje. $_POST er en matrise som data fra skjemaet sendes inn i. I html-skjemaet er sendemetoden spesifisert som method="post". Så to variabler fra html-skjemaet er akseptert. For å beskytte nettstedet ditt, må du sende disse variablene gjennom flere filtre - php-funksjoner.

Den første funksjonen vil konvertere alle tegnene som brukeren vil prøve å legge til i skjemaet:

I dette tilfellet opprettes ikke nye variabler i php, men eksisterende brukes. Det filteret vil gjøre er å transformere tegnet "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

Den andre funksjonen dekoder URL-en hvis brukeren prøver å legge den til i skjemaet.

$fio = urldecode($fio);
$email = urldecode($email);

Med den tredje funksjonen vil vi fjerne mellomrom fra begynnelsen og slutten av linjen, hvis noen:

$fio = trim($fio);
$email = trim($email);

Det er andre funksjoner som lar deg filtrere php-variabler. Bruken av dem avhenger av hvor bekymret du er for at en angriper vil prøve å legge til programkode i dette html-skjemaet for e-postinnsending.

Validering av data overført fra HTML-skjema til PHP-fil

For å sjekke om denne koden fungerer og om data overføres, kan du ganske enkelt vise den på skjermen ved hjelp av ekkofunksjonen:

ekko $fio;
ekko "
";
echo $email;

Den andre linjen her er nødvendig for å skille utdataene til php-variabler i forskjellige linjer.

Sende mottatte data fra et HTML-skjema til e-post ved hjelp av PHP

For å sende data på e-post må du bruke e-postfunksjonen i PHP.

mail("til hvilken adresse skal sendes", "emne for brevet", "Melding (brevets brødtekst)","Fra: fra hvilken e-post brevet sendes \r\n");

Du må for eksempel sende data til e-posten til nettstedets eier eller leder [e-postbeskyttet].

Emnet for brevet skal være klart, og budskapet i brevet skal inneholde det brukeren spesifiserte i HTML-skjemaet.

post(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n");

Det er nødvendig å legge til en betingelse som vil sjekke om skjemaet ble sendt med PHP til den angitte e-postadressen.

if (mail(" [e-postbeskyttet]", "Bestill fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))
{
echo "melding sendt vellykket";
) annet (
}

Dermed vil programkoden til send.php-filen, som sender HTML-skjemadataene til e-post, se slik ut:

$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
//ekko $fio;
//ekko "
";
//echo $email;
if (mail(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))
( ekko "melding sendt vellykket";
) annet (
echo "feil oppstod under sending av meldingen";
}?>

Tre linjer for å sjekke om dataene blir overført til filen blir kommentert ut. Om nødvendig kan de fjernes, siden de bare var nødvendig for feilsøking.

Vi legger HTML- og PHP-koden for innsending av skjemaet i én fil

I kommentarene til denne artikkelen stiller mange mennesker spørsmålet om hvordan man sørger for at både HTML-skjemaet og PHP-koden for å sende data til e-post er i én fil, og ikke to.

For å implementere dette arbeidet, må du plassere HTML-koden til skjemaet i send.php-filen og legge til en betingelse som vil kontrollere tilstedeværelsen av variabler i POST-matrisen (denne matrisen sendes fra skjemaet). Det vil si at hvis variablene i matrisen ikke eksisterer, må du vise brukeren skjemaet. Ellers må du motta data fra arrayet og sende det til mottakeren.

La oss se hvordan du endrer PHP-koden i send.php-filen:



Søknadsskjema fra nettstedet


//sjekk om det finnes variabler i POST-matrisen
if(!isset($_POST["fio"]) og !isset($_POST["email"]))(
?>





) annet (
//vis skjemaet
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = trim($fio);
$email = trim($email);
if (mail(" [e-postbeskyttet]", "Søknad fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))(
echo "Melding sendt vellykket";
) annet (
echo "Det oppstod feil under sending av meldingen";
}
}
?>

Vi sjekker eksistensen av en variabel i POST-matrisen med isset() PHP-funksjonen. Et utropstegn før denne funksjonen i en tilstand betyr negasjon. Det vil si at hvis variabelen ikke eksisterer, må vi vise formen vår. Hvis jeg ikke hadde satt utropstegnet, ville tilstanden bokstavelig talt bety "hvis den eksisterer, så vis formen." Og dette er feil i vårt tilfelle. Naturligvis kan du gi det nytt navn til index.php. Hvis du gir nytt navn til filen, ikke glem å gi nytt navn til filnavnet på linjen

. Skjemaet skal lenke til samme side, for eksempel index.php. Jeg la til sidetittelen i koden.

Vanlige feil som oppstår når du sender inn et PHP-skjema fra et nettsted

Den første, sannsynligvis den mest populære feilen, er når du ser en tom hvit side uten meldinger. Dette betyr at du har gjort en feil i sidekoden. Du må aktivere visning av alle feil i PHP og så vil du se hvor feilen ble gjort. Legg til i koden:

ini_set("display_errors","På");
error_reporting("E_ALL");

Send.php-filen må kun kjøres på serveren, ellers vil koden rett og slett ikke fungere. Det anbefales at dette ikke er en lokal server, siden den ikke alltid er konfigurert til å sende data til en ekstern e-postserver. Hvis du kjører koden ikke på serveren, vil PHP-koden vises direkte på siden.

Derfor, for korrekt drift, anbefaler jeg å plassere send.php-filen på webhotellet. Som regel er alt allerede konfigurert der.

En annen vanlig feil er når varselet "Melding sendt vellykket" vises, men brevet kommer ikke i posten. I dette tilfellet må du nøye sjekke linjen:

if (mail(" [e-postbeskyttet]", "Bestill fra nettstedet", "Fullt navn:".$fio.". E-post: ".$email ,"Fra: [e-postbeskyttet]\r\n"))

I stedet for [e-postbeskyttet] det må være en e-postadresse som brevet skal sendes til, men i stedet[e-postbeskyttet] må være en eksisterende e-post for dette nettstedet. For et nettsted vil dette for eksempel være . Bare i dette tilfellet vil et brev med dataene fra skjemaet bli sendt.

Sist oppdatert: 31.10.2015

For å sende e-post på Internett, brukes SMTP-protokollen (Simple Mail Transfer Protocol). Denne protokollen spesifiserer hvordan e-postservere kommuniserer når de overfører e-post.

SmtpClient-klassen fra System.Net.Mail-navneområdet er designet for å fungere med SMTP-protokollen og sende e-post i .NET.

Denne klassen definerer en rekke egenskaper som lar deg konfigurere sending:

    Vert: smtp-server som e-post sendes fra. For eksempel smtp.yandex.ru

    Port: Port som brukes av smp-serveren. Hvis det ikke er spesifisert, brukes port 25 som standard.

    Påloggingsinformasjon: avsenderens autentiseringsdata

    EnableSsl: Angir om SSL skal brukes ved sending

En annen nøkkelklasse som brukes ved sending er MailMessage. Denne klassen representerer meldingen som sendes. Blant egenskapene er følgende:

    Vedlegg: inneholder alle vedlegg til brevet

    Brødtekst: teksten til selve brevet

    Fra: avsenderens adresse. Representerer et MailAddress-objekt

    Til: mottakers adresse. Representerer også et MailAddress-objekt

    Emne: definerer emnet for brevet

    IsBodyHtml: Angir om e-posten representerer innhold med html-kode

La oss bruke disse timene og sende et brev:

Bruke System; bruker System.Net; bruker System.IO; bruke System.Threading.Tasks; bruker System.Net.Mail; navneområde NetConsoleApp ( klasse Program ( static void Main(string args) ( // sender - angi adressen og navnet som vises i bokstaven MailAddress from = new MailAddress(" [e-postbeskyttet]", "Tom"); // som vi sender MailAddress til = new MailAddress(" [e-postbeskyttet]"); // opprett et meldingsobjekt MailMessage m = new MailMessage(fra, til); // emne for bokstaven m.Subject = "Test"; // tekst av bokstaven m.Body = "

Bokstavtest av smtp-klientdrift

"; // bokstaven representerer html-koden m.IsBodyHtml = true; // adressen til smtp-serveren og porten som vi sender bokstaven SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587) ; // pålogging og passord smtp.Credentials = new NetworkCredential(" [e-postbeskyttet]", "mitt passord"); smtp.EnableSsl = true; smtp.Send(m); Console.Read(); ) ) )

For å sende brukes Send()-metoden, som MailMessage-objektet sendes til.

Vi kan også bruke den asynkrone versjonen av sending ved å bruke SendMailAsync-metoden:

Bruke System; bruker System.Net; bruker System.IO; bruke System.Threading.Tasks; bruker System.Net.Mail; navneområde NetConsoleApp ( klasse Program ( static void Main(string args) ( SendEmailAsync().GetAwaiter(); Console.Read(); ) privat statisk async Oppgave SendEmailAsync() ( MailAddress from = new MailAddress(" [e-postbeskyttet]", "Tom"); MailAddress to = new MailAddress(" [e-postbeskyttet]"); MailMessage m = new MailMessage(fra, til); m.Subject = "Test"; m.Body = "Brevtest 2 av smtp-klienten"; SmtpClient smtp = new SmtpClient("smtp.gmail.com" , 587); smtp.Credentials = new NetworkCredential(" [e-postbeskyttet]", "mitt passord"); smtp.EnableSsl = true; vent smtp.SendMailAsync(m); Console.WriteLine("Melding sendt"); ) ) )

Legger til vedlegg

Vi kan legge ved vedlegg til et brev ved å bruke egenskapen Vedlegg. Hvert vedlegg representerer et System.Net.Mail.Attachment-objekt:

MailAddress from = new MailAddress(" [e-postbeskyttet]", "Tom"); MailAddress to = new MailAddress(" [e-postbeskyttet]"); MailMessage m = new MailMessage(fra, til); m.Attachments.Add(new Attachment("D://temlog.txt"));

Sende meldinger via e-post i Visual Studio 2013 C++


Det ser ut til, hvorfor finne opp hjulet på nytt? Det er mange programmer som kan sende e-post: både betalt og gratis. I disse programmene kan du sende brev ikke til én, men til mange mottakere samtidig. Men å legge til mottakere gjøres fortsatt manuelt; å legge inn adressene deres er et ork, spesielt hvis det er mer enn et dusin av dem. Hva om du regelmessig trenger å sende hundrevis av e-poster? Og jeg snakker ikke om spam, men jeg mener helt lovlige utsendelser?

I dette tilfellet kan et spesielt program komme til unnsetning. Denne artikkelen vil ikke inneholde et slikt helt program, men et lite program som ganske enkelt sender ett brev til én adresse. I dette tilfellet skjer autorisasjon via smpt, det vil si at brevet ikke sendes fra et ukjent sted, men fra en veldig ekte postkasse. Eksemplet bruker mail.ru.

Så her er teksten til programmet.

#inkluder "stdafx.h" #using bruker navneområde System; bruker navneområde System::Net; bruker navneområde System::Net::Mail; bruker navneområde System::Net::Mime; bruker navneområde System::Threading; bruker navneområde System::ComponentModel; int main() ( SmtpClient ^Smtp = gcnew SmtpClient("smtp.mail.ru", 25); Smtp->Credentials = gcnew NetworkCredential("[email protected]", "ditt_passord"); Smtp->EnableSsl = true ; MailMessage ^Message = gcnew MailMessage(); Melding->Fra = gcnew MailAddress("[email protected]"); Melding->Til->Legg til(gcnew MailAddress("[email protected]")); Melding- >Subject = "Header"; Message->Body = "Message"; Smtp->Send(Message); ) Det er verdt å nevne med en gang hvilke betingelser som må oppfylles: et prosjekt i Visual Studio 2013 lages ikke bare for C++, det må også være konsoll, støtte CLR-miljøet. La oss se nærmere på hva som skjer og på hvilken linje i dette C++-programmet som sender en melding til den valgte e-postboksen.

Fra linje 1 til 8 kobles toppfiler og navneområder sammen. Linje 13 initialiserer smpt-serveren. Yandex og Google bruker sine egne: henholdsvis smtp.yandex.ru og smtp.google.ru. Nummer 25 på denne linjen er porten. Hvis leverandøren din blokkerer denne porten eller du ikke kan koble til, kan du prøve følgende alternativer: 465 eller 587. På linje 14 må du skrive inn e-postkontoen din (hvorfra brevet sendes) og passordet for denne postkassen.

Vi legger spesielt merke til linje 15 - det er her den sikre ssl-protokollen er koblet til. Dette kreves for Yandex og Mail. Linje 17 lager en melding; kl 18 - returadresse; kl 19 - mottakers adresse; 20 - bokstavoverskrift; 21 - melding; linje 22 sender. Hvis det ikke dukker opp noen feil etter å ha startet programmet, ingenting skjer, så er alt bra - sjekk mottakerens postkasse.

Hvis du i det minste har noen mindre programmeringsferdigheter, vil det være ganske enkelt å fullføre resten. Du må lage et vindu, et skjema, flere inndatafelt i skjemaet, tvinge programmet til å laste inn en adresseliste fra for eksempel en tekstfil eller en MS Access-database. Hvis dette ennå ikke er helt klart for deg, vil jeg i de følgende artiklene fortelle deg om alt mer detaljert.

Du kan stille spørsmål om programmer i C++, java, skript i java script og php, oppretting og layout av nettsider via e-post [e-postbeskyttet] eller bank på Skype up777up2. For en svært rimelig avgift hjelper jeg deg gjerne.

Addisjon

En av bloggbesøkerne stilte et spørsmål: hvordan legger man ved en fil i dette programmet? Svaret er enkelt: du må legge til noen få linjer med kode i applikasjonen:

String^ att = L"att.xls"; Attachment^ dan = gcnew Attachment(att, MediaTypeNames::Application::Octet); Melding->Vedlegg->Legg til(dan); I den første linjen definerer vi den vedlagte filen, i den andre definerer vi dataene og beordrer ikke å tolke dem (Content-Type-overskriften til MIME-protokollen) og i den tredje legger vi den til bokstaven. Det er alt.

fortelle venner