Utumaji wa barua pepe wa kiprogramu kwa kutumia huduma mbalimbali. Kutuma Barua pepe C# kutuma barua pepe

Habari. Kwa kuwa graphomania yangu inaendelea, niliamua kuongeza makala nyingine. Nakala, kama kawaida, itakuwa na mifano katika C #, lakini mtaalamu wa VB mwenye ujuzi zaidi au chini ataandika upya nambari zote kwa urahisi chini ya VB.NET.

Hebu tuanze, nadhani

Ili kutuma Barua pepe tunahitaji kutumia vitu vitatu. System.Net.Mail.SmtpClient kutuma ujumbe, System.Net.Mail.MailMessage kuwasilisha ujumbe, na System.Net.NetworkCredential kuidhinisha.

Wacha tuunde mteja:

Var client = new SmtpClient("$Mail-Server-Address$", $Mail-Server-Port$);

Rejeleo la mbunifu:

SmtpClient(mwenyeji wa kamba, bandari ya ndani);

Wacha tuunde mfano wa darasa la MailMessage:

Var msg = new MailMessage("kutoka", "kwenda");

Sasa hebu tuweke somo na maudhui ya barua (kwa njia, kila kitu kinaweza kuweka katika mjenzi). Na pia kuingia na nenosiri kwa mteja wa smtp. Kisha tutatuma barua kwa kutumia njia ya Tuma ya kitu cha mteja wetu:

Var mteja = new SmtpClient("smtp.yandex.ru"); var msg = Ujumbe mpya wa Barua("kutoka", "hadi"); msg.Subject = "Ujumbe wangu wa jaribio"; msg.Body = "Halo, rafiki yangu! Hebu fikiria kwamba niliandika tu programu ya ajabu ya kutuma barua hii isiyo na maana kwako mara bilioni tu kwa kubofya mara kadhaa!"; msg.SubjectEncoding = Encoding.UTF8; msg.BodyEncoding = Usimbaji.UTF8; // priority msg.Priority = MailPriority.Juu; // mwili wa barua pepe katika html? msg.IsBodyHtml = uongo; client.Credentials = new NetworkCredential("ingia", "nenosiri"); mteja.Tuma(msg);

Ni hayo tu. Usisahau kujaza taarifa zote zinazohitajika kwa usahihi.


Maoni ()

Urusi02 30

CoolHacker, je, ninaweza kuazima nambari hii kutoka kwako kwa sehemu ya 3 ya kivinjari cha wavuti?

Coolhacker 770 Urusi02 30

Asante, nitaitumia kutuma viungo kwa barua pepe
kama katika Firefox

LetSevI 10

Kutuma ujumbe kwa barua pepe katika Visual Studio 2013 C++


Inaweza kuonekana, kwa nini kuunda tena gurudumu? Kuna programu nyingi ambazo zinaweza kutuma barua pepe: zote mbili zilizolipwa na bila malipo. Katika programu hizi unaweza kutuma barua si kwa moja, lakini kwa wapokeaji wengi mara moja. Walakini, kuongeza wapokeaji bado hufanywa kwa mikono; kuweka anwani zao ni kazi ngumu, haswa ikiwa kuna zaidi ya dazeni yao. Je, ikiwa unahitaji kutuma mamia ya barua pepe mara kwa mara? Na sizungumzii barua taka, lakini ninamaanisha barua pepe za kisheria kabisa?

Katika kesi hii, mpango maalum unaweza kuja kuwaokoa. Nakala hii haitakuwa na programu nzima, lakini programu ndogo ambayo hutuma barua moja kwa anwani moja. Katika kesi hii, idhini hutokea kupitia smpt, yaani, barua haitumwa kutoka mahali fulani haijulikani, lakini kutoka kwa sanduku la barua halisi. Mfano hutumia mail.ru.

Kwa hivyo, hapa kuna maandishi ya programu.

#pamoja na "stdafx.h" #kutumia kutumia Mfumo wa nafasi ya majina; kutumia nafasi ya majina System::Net; kutumia nafasi ya majina System::Net::Mail; kutumia nafasi ya majina System::Net::Mime; kutumia nafasi ya majina System::Threading; kutumia nafasi ya majina System::ComponentModel; int main() ( SmtpClient ^Smtp = gcnew SmtpClient("smtp.mail.ru", 25); Smtp->Sifa = gcnew NetworkCredential("[email protected]", "your_password"); Smtp->EnableSsl ; Barua pepe ^Ujumbe = gcnew MailMessage(); Ujumbe->Kutoka = gcnew MailAddress("[email protected]"); Ujumbe->To->Ongeza(gcnew MailAddress("[email protected]")); Ujumbe- >Subject = "Header"; Message->Body = "Message"; Smtp->Send(Message); ) Inafaa kutaja mara moja ni masharti gani lazima yatimizwe: mradi katika Visual Studio 2013 haujaundwa tu kwa C++, lazima pia iwe console, isaidie mazingira ya CLR. Hebu tuchunguze kwa undani kile kinachotokea na kwa mstari gani katika programu hii ya C++ ambayo hutuma ujumbe kwa sanduku la barua pepe lililochaguliwa.

Kutoka kwa mstari wa 1 hadi 8, faili za kichwa na nafasi za majina zimeunganishwa. Mstari wa 13 huanzisha seva ya smpt. Yandex na Google hutumia yao wenyewe: smtp.yandex.ru na smtp.google.ru, kwa mtiririko huo. Nambari 25 kwenye mstari huu ni bandari. Ikiwa mtoa huduma wako anazuia bandari hii au huwezi kuunganisha, unaweza kujaribu chaguzi zifuatazo: 465 au 587. Kwenye mstari wa 14 unahitaji kuingiza akaunti yako ya barua pepe (ambayo barua itatumwa) na nenosiri la sanduku hili la barua.

Tunalipa kipaumbele maalum kwa mstari wa 15 - hii ndio ambapo itifaki ya salama ya ssl imeunganishwa. Hii inahitajika kwa Yandex na Barua. Mstari wa 17 huunda ujumbe; saa 18 - anwani ya kurudi; saa 19 - anwani ya mpokeaji; 20 - kichwa cha barua; 21 - ujumbe; mstari wa 22 unatuma. Ikiwa baada ya kuanza programu hakuna makosa yanayotokea, hakuna kinachotokea, basi kila kitu ni sawa - angalia sanduku la barua la mpokeaji.

Ikiwa una angalau ujuzi mdogo wa programu, basi kumaliza wengine itakuwa rahisi sana. Unahitaji kuunda dirisha, fomu, mashamba kadhaa ya pembejeo katika fomu, kulazimisha programu kupakia orodha ya anwani kutoka, kwa mfano, faili ya maandishi au database ya MS Access. Ikiwa hii bado haijawa wazi kwako, basi katika makala zifuatazo nitakuambia kuhusu kila kitu kwa undani zaidi.

Unaweza kuuliza maswali yoyote kuhusu programu katika C++, java, hati katika hati ya java na php, uundaji wa tovuti na mpangilio kwa barua. [barua pepe imelindwa] au piga Skype up777up2. Kwa ada nzuri sana, nitafurahi kukusaidia.

Nyongeza

Mmoja wa wageni wa blogi aliuliza swali: jinsi ya kuunganisha faili katika programu hii? Jibu ni rahisi: unahitaji kuongeza mistari michache ya nambari kwenye programu:

String^ att = L"att.xls"; Kiambatisho^ dan = gcnew Kiambatisho(att, MediaTypeNames::Application::Octet); Ujumbe-> Viambatisho-> Ongeza(dan); Katika mstari wa kwanza tunafafanua faili iliyounganishwa, kwa pili tunafafanua data na ili tusiifasiri (kichwa cha Aina ya Maudhui ya itifaki ya MIME) na ya tatu tunaiongeza kwa barua. Ni hayo tu.

Mara nyingi sana unapaswa kushughulika na kutuma barua pepe kutoka kwa msimbo wa programu. Huna haja ya kuangalia mbali kwa mifano.

Nakala hii ni kidokezo na haifichui chochote kipya, lakini kabla ya kuiandika, nilionekana sawa kwenye Mtandao na nilishangaa sana kwamba karibu kila mahali hutoa suluhisho ambalo halifanyi kazi au limepitwa na wakati, au imeandikwa tu bila kusoma na kuandika.

Jambo la kwanza hupaswi kufanya kulingana na mifano hii ni kutumia System.Web.Mail, ambayo imepitwa na wakati kwa muda mrefu, na kuanzia Visual Studio 2010, huwezi hata kuongeza maktaba ya System.Web bila kujua njia kamili. kwa DLL inayolingana.
Inapendekezwa kutumia maktaba ya System.Net badala yake.
kutumia System.Net; kwa kutumia System.Net.Mail;
Kwa hivyo, jambo rahisi zaidi, ambalo pia ni muhimu zaidi na linalotumiwa mara kwa mara, ni kutuma barua kutoka kwa seva yako ya barua ambayo mteja wa SMTP husanidiwa. Kama unavyoelewa, seva inaweza kuwa ile ambayo programu inaendesha, au ya mbali ambayo una haki ya kutuma barua bila idhini ya ziada.

Mfano wa nambari ya kutuma barua kutoka kwa mashine ya ndani:
", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Body Mail"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("127.0.0.1"))(//Anwani inapaswa kuwa hapa seva ya barua na bandari, ikihitajika sc.Send(mm); ) )

Kutumia huduma za barua pepe kama vile Gmail, Yandex, Mail.ru, nk. kila kitu ni sawa, vigezo vilivyo na idhini vinaongezwa.

Seva ya SMTP: smtp.gmail.com
Bandari: 587
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "GmailPassword"); sc.Tuma(mm); ) )

Seva ya SMTP: smtp.yandex.ru
Bandari: 25
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "YandexPassword"); sc.Tuma(mm); ))

Seva ya SMTP: smtp.mail.ru
Bandari: 25
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "MailRuPassword"); sc.Tuma(mm); ))
Ikiwa kisanduku chako cha barua kwenye huduma ya mail.ru kinaisha kwenye inbox.ru, list.ru au bk.ru, basi anwani ya seva ya SMTP inabadilika ipasavyo (smtp.inbox.ru, smtp.list.ru na smtp.bk.ru).

Kama unavyoona, ili kutumia huduma nyingine yoyote ya barua katika programu zako, unahitaji tu kujua anwani ya seva ya SMTP na bandari, pamoja na sheria za uidhinishaji.

Pia ni muhimu kukumbuka kuwa karibu huduma zote za barua pepe za wahusika wengine huweka mipaka kwa idadi ya barua pepe zilizotumwa kwa muda.

Tags: barua pepe, kutuma barua, smtp

Bw Olympia Oktoba 14, 2013 saa 07:29 jioni

Kutuma barua pepe kwa utaratibu kwa kutumia huduma mbalimbali

  • .WAVU

Mara nyingi sana unapaswa kushughulika na kutuma barua pepe kutoka kwa msimbo wa programu. Huna haja ya kuangalia mbali kwa mifano.

Nakala hii ni kidokezo na haifichui chochote kipya, lakini kabla ya kuiandika, nilionekana sawa kwenye Mtandao na nilishangaa sana kwamba karibu kila mahali hutoa suluhisho ambalo halifanyi kazi au limepitwa na wakati, au imeandikwa tu bila kusoma na kuandika.

Jambo la kwanza hupaswi kufanya kulingana na mifano hii ni kutumia System.Web.Mail, ambayo imepitwa na wakati kwa muda mrefu, na kuanzia Visual Studio 2010, huwezi hata kuongeza maktaba ya System.Web bila kujua njia kamili. kwa DLL inayolingana.
Inapendekezwa kutumia maktaba ya System.Net badala yake.
kutumia System.Net; kwa kutumia System.Net.Mail;
Kwa hivyo, jambo rahisi zaidi, ambalo pia ni muhimu zaidi na linalotumiwa mara kwa mara, ni kutuma barua kutoka kwa seva yako ya barua ambayo mteja wa SMTP husanidiwa. Kama unavyoelewa, seva inaweza kuwa ile ambayo programu inaendesha, au ya mbali ambayo una haki ya kutuma barua bila idhini ya ziada.

Mfano wa nambari ya kutuma barua kutoka kwa mashine ya ndani:
", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Body Mail"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("127.0.0.1"))(//Anwani inapaswa kuwa hapa seva ya barua na bandari, ikihitajika sc.Send(mm); ) )

Kutumia huduma za barua pepe kama vile Gmail, Yandex, Mail.ru, nk. kila kitu ni sawa, vigezo vilivyo na idhini vinaongezwa.

Seva ya SMTP: smtp.gmail.com
Bandari: 587
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.gmail.com", 587))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "GmailPassword"); sc.Tuma(mm); ) )

Seva ya SMTP: smtp.yandex.ru
Bandari: 25
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.yandex.ru", 25))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "YandexPassword"); sc.Tuma(mm); ))

Seva ya SMTP: smtp.mail.ru
Bandari: 25
kwa kutumia (MailMessage mm = MailMessage mpya("Jina ", "[barua pepe imelindwa]"))( mm.Subject = "Somo la Barua"; mm.Body = "Mwili wa Barua"; mm.IsBodyHtml = uongo; kwa kutumia (SmtpClient sc = new SmtpClient("smtp.mail.ru", 25))( sc. EnableSsl = kweli; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = uongo; sc.Credentials = new NetworkCredential(" [barua pepe imelindwa]", "MailRuPassword"); sc.Tuma(mm); ))
Ikiwa kisanduku chako cha barua kwenye huduma ya mail.ru kinaisha kwenye inbox.ru, list.ru au bk.ru, basi anwani ya seva ya SMTP inabadilika ipasavyo (smtp.inbox.ru, smtp.list.ru na smtp.bk.ru).

Kama unavyoona, ili kutumia huduma nyingine yoyote ya barua katika programu zako, unahitaji tu kujua anwani ya seva ya SMTP na bandari, pamoja na sheria za uidhinishaji.

Pia ni muhimu kukumbuka kuwa karibu huduma zote za barua pepe za wahusika wengine huweka mipaka kwa idadi ya barua pepe zilizotumwa kwa muda.

Tags: barua pepe, kutuma barua, smtp

Moja ya kazi maarufu zaidi kwenye tovuti ni fomu ya maombi au utaratibu, data ambayo hutumwa kwa barua pepe kwa mmiliki wa tovuti. Kama sheria, fomu kama hizo ni rahisi na zina sehemu mbili au tatu za kuingiza data. Jinsi ya kuunda fomu ya kuagiza vile? Hii inahitaji matumizi ya lugha ya alama za HTML na lugha ya programu ya PHP.

Lugha ya alama ya HTML yenyewe ni rahisi; unahitaji tu kujua jinsi na wapi kuweka vitambulisho fulani. Kwa lugha ya programu ya PHP, mambo ni ngumu zaidi.

Kwa mpangaji wa programu, kuunda fomu kama hiyo sio ngumu, lakini kwa mbuni wa mpangilio wa HTML, vitendo vingine vinaweza kuonekana kuwa ngumu.

Unda fomu ya kuwasilisha data katika html

Mstari wa kwanza utakuwa kama ifuatavyo

Hii ni kipengele muhimu sana cha fomu. Ndani yake tunaonyesha jinsi data itahamishwa na faili gani. Katika kesi hii, kila kitu kinahamishwa kwa kutumia njia ya POST kwenye faili ya send.php. Mpango katika faili hii lazima ipasavyo kupokea data, itakuwa zilizomo katika safu posta, na kutuma kwa barua pepe maalum.

Turudi kwenye fomu. Mstari wa pili utakuwa na sehemu ya kuingiza jina lako kamili. Ina nambari ifuatayo:

Aina ya fomu ni maandishi, yaani, mtumiaji ataweza kuingiza au kunakili maandishi hapa kutoka kwenye kibodi. Kigezo cha jina kina jina la fomu. Katika kesi hii, ni fio; ni chini ya jina hili kwamba kila kitu ambacho mtumiaji aliingia kwenye uwanja huu kitapitishwa. Kigezo cha kishika nafasi kinabainisha kitakachoandikwa katika sehemu hii kama maelezo.

Mstari unaofuata:

Hapa, karibu kila kitu ni sawa, lakini jina la shamba ni barua pepe, na maelezo ni kwamba mtumiaji huingiza barua pepe yake katika fomu hii.

Mstari unaofuata utakuwa kitufe cha "tuma":

Na mstari wa mwisho katika fomu itakuwa tag

Sasa hebu tuweke kila kitu pamoja.





Sasa hebu tufanye mashamba katika fomu ya lazima. Tunayo nambari ifuatayo:





Unda faili inayokubali data kutoka kwa fomu ya HTML

Hii itakuwa faili inayoitwa send.php

Katika faili, katika hatua ya kwanza, unahitaji kukubali data kutoka kwa safu ya posta. Ili kufanya hivyo, tunaunda vigezo viwili:

$fio = $_POST["fio"];
$barua pepe = $_POST["barua pepe"];

Majina yanayobadilika katika PHP hutanguliwa na ishara ya $, na semicolon imewekwa mwishoni mwa kila mstari. $_POST ni safu ambayo data kutoka kwa fomu hutumwa. Katika fomu ya html, njia ya kutuma imebainishwa kama method="post". Kwa hivyo, vigezo viwili kutoka kwa fomu ya html vinakubaliwa. Ili kulinda tovuti yako, unahitaji kupitisha vigezo hivi kupitia vichungi kadhaa - kazi za php.

Kazi ya kwanza itabadilisha herufi zote ambazo mtumiaji atajaribu kuongeza kwenye fomu:

Katika kesi hii, vigezo vipya havikuundwa katika php, lakini zilizopo hutumiwa. Kichujio kitafanya nini ni kubadilisha tabia "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

Chaguo za kukokotoa za pili husimbua URL ikiwa mtumiaji atajaribu kuiongeza kwenye fomu.

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

Kwa kazi ya tatu tutaondoa nafasi kutoka mwanzo na mwisho wa mstari, ikiwa ipo:

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

Kuna vitendaji vingine vinavyokuruhusu kuchuja vigeu vya php. Matumizi yao yanategemea jinsi unavyojali kwamba mshambuliaji atajaribu kuongeza msimbo wa programu kwenye fomu hii ya uwasilishaji ya barua pepe ya html.

Uthibitishaji wa data iliyohamishwa kutoka fomu ya HTML hadi faili ya PHP

Ili kuangalia ikiwa nambari hii inafanya kazi na ikiwa data inahamishwa, unaweza kuionyesha kwenye skrini kwa kutumia kitendakazi cha mwangwi:

echo $ fio;
mwangwi"
";
echo $ barua pepe;

Mstari wa pili hapa unahitajika kutenganisha pato la vigeu vya php katika mistari tofauti.

Inatuma data iliyopokelewa kutoka kwa fomu ya HTML kwa barua pepe kwa kutumia PHP

Ili kutuma data kwa barua pepe, unahitaji kutumia kazi ya barua pepe katika PHP.

mail("anwani ipi ya kutuma", "somo la barua", "Ujumbe (mwili wa barua)","Kutoka: ambayo barua inatumwa \r\n");

Kwa mfano, unahitaji kutuma data kwa barua pepe ya mmiliki wa tovuti au meneja [barua pepe imelindwa].

Mada ya barua inapaswa kuwa wazi, na ujumbe wa barua unapaswa kuwa na kile ambacho mtumiaji alibainisha katika fomu ya HTML.

barua (" [barua pepe imelindwa]", "Maombi kutoka kwa tovuti", "Jina kamili:".$fio.". Barua pepe: ".$email ,"Kutoka: [barua pepe imelindwa]\r\n");

Inahitajika kuongeza hali ambayo itaangalia ikiwa fomu ilitumwa kwa kutumia PHP kwa anwani maalum ya barua pepe.

ikiwa (barua (" [barua pepe imelindwa]", "Agizo kutoka kwa tovuti", "Jina kamili:".$fio.". Barua pepe: ".$email ,"Kutoka: [barua pepe imelindwa]\r\n"))
{
echo "ujumbe uliotumwa kwa mafanikio";
) mwingine (
}

Kwa hivyo, msimbo wa programu wa faili ya send.php, ambayo itatuma data ya fomu ya HTML kwa barua pepe, itaonekana kama hii:

$fio = $_POST["fio"];
$barua pepe = $_POST["barua pepe"];
$fio = htmlspecialchars($fio);
$barua pepe = htmlspecialchars($email);
$fio = urldecode($fio);
$barua pepe = urldecode($email);
$fio = trim($fio);
$barua pepe = trim($email);
// echo $ fio;
// mwangwi"
";
// echo $ barua pepe;
ikiwa (barua (" [barua pepe imelindwa]", "Maombi kutoka kwa tovuti", "Jina kamili:".$fio.". Barua pepe: ".$email ,"Kutoka: [barua pepe imelindwa]\r\n"))
( echo "ujumbe umetumwa kwa mafanikio";
) mwingine (
echo "makosa yalitokea wakati wa kutuma ujumbe";
}?>

Mistari mitatu ya kuangalia kama data inahamishiwa kwenye faili imetolewa maoni. Ikiwa ni lazima, zinaweza kuondolewa, kwani zilihitajika tu kwa kurekebisha.

Tunaweka msimbo wa HTML na PHP kwa kuwasilisha fomu katika faili moja

Katika maoni ya kifungu hiki, watu wengi huuliza swali la jinsi ya kuhakikisha kuwa fomu ya HTML na nambari ya PHP ya kutuma data kwa barua pepe iko kwenye faili moja, na sio mbili.

Ili kutekeleza kazi hii, unahitaji kuweka msimbo wa HTML wa fomu katika faili ya send.php na kuongeza hali ambayo itaangalia uwepo wa vigezo katika safu ya POST (safu hii inatumwa kutoka kwa fomu). Hiyo ni, ikiwa vigezo katika safu hazipo, basi unahitaji kuonyesha mtumiaji fomu. Vinginevyo, unahitaji kupokea data kutoka kwa safu na kuituma kwa mpokeaji.

Hebu tuone jinsi ya kubadilisha msimbo wa PHP katika faili ya send.php:



Fomu ya maombi kutoka kwa tovuti


//angalia ikiwa vigeuzo vipo kwenye safu ya POST
if(!isset($_POST["fio"]) na !isset($_POST["email"]))(
?>





) mwingine (
//onyesha fomu
$fio = $_POST["fio"];
$barua pepe = $_POST["barua pepe"];
$fio = htmlspecialchars($fio);
$barua pepe = htmlspecialchars($email);
$fio = urldecode($fio);
$barua pepe = urldecode($email);
$fio = trim($fio);
$barua pepe = trim($email);
ikiwa (barua (" [barua pepe imelindwa]", "Maombi kutoka kwa tovuti", "Jina kamili:".$fio.". Barua pepe: ".$email ,"Kutoka: [barua pepe imelindwa]\r\n"))(
echo "Ujumbe umetumwa kwa mafanikio";
) mwingine (
echo "Makosa yalitokea wakati wa kutuma ujumbe";
}
}
?>



Tunaangalia kuwepo kwa kutofautiana katika safu ya POST na kazi ya isset() PHP. Alama ya mshangao kabla ya chaguo hili la kukokotoa katika hali ina maana ya kukanusha. Hiyo ni, ikiwa kutofautiana haipo, basi tunahitaji kuonyesha fomu yetu. Ikiwa singeweka alama ya mshangao, hali hiyo ingemaanisha "ikiwa ipo, basi onyesha fomu." Na hii sio sawa katika kesi yetu. Kwa kawaida, unaweza kuipa jina tena kwa index.php. Ikiwa utabadilisha jina la faili, usisahau kubadilisha jina la faili kwenye mstari

. Fomu inapaswa kuunganishwa na ukurasa huo huo, kwa mfano index.php. Niliongeza kichwa cha ukurasa kwenye nambari.

Makosa ya kawaida yanayotokea wakati wa kuwasilisha fomu ya PHP kutoka kwa tovuti

Kosa la kwanza, pengine lililo maarufu zaidi, ni unapoona ukurasa mweupe usio na ujumbe. Hii ina maana kwamba ulifanya makosa katika msimbo wa ukurasa. Unahitaji kuwezesha onyesho la makosa yote kwenye PHP na kisha utaona ni wapi kosa lilifanywa. Ongeza kwa nambari:

ini_set("makosa_ya_maonyesho","Imewashwa");
error_reporting("E_ALL");

Faili ya send.php lazima iendeshwe tu kwenye seva, vinginevyo msimbo hautafanya kazi. Inashauriwa kuwa hii sio seva ya ndani, kwani haijasanidiwa kila wakati kutuma data kwa seva ya barua ya nje. Ikiwa utaendesha msimbo sio kwenye seva, basi msimbo wa PHP utaonyeshwa moja kwa moja kwenye ukurasa.

Kwa hivyo, kwa operesheni sahihi, napendekeza kuweka faili ya send.php kwenye mwenyeji wa tovuti. Kama sheria, kila kitu tayari kimeundwa hapo.

Hitilafu nyingine ya kawaida ni wakati arifa ya "Ujumbe uliotumwa kwa mafanikio" inaonekana, lakini barua haifiki kwa barua. Katika kesi hii, unahitaji kuangalia kwa uangalifu mstari:

ikiwa (barua (" [barua pepe imelindwa]", "Agizo kutoka kwa tovuti", "Jina kamili:".$fio.". Barua pepe: ".$email ,"Kutoka: [barua pepe imelindwa]\r\n"))

Badala ya [barua pepe imelindwa] lazima kuwe na barua pepe ambayo barua inapaswa kutumwa, lakini badala yake[barua pepe imelindwa] lazima iwe barua pepe iliyopo kwa tovuti hii. Kwa mfano, kwa tovuti hii itakuwa . Tu katika kesi hii barua yenye data kutoka kwa fomu itatumwa.