Помощ » Обща информация » PHP » Как да използвате PHPMailer за вашата контакт форма?

Как да използвате PHPMailer за вашата контакт форма?

Един от най-лесните начини да изградите лоялни последователи за вашия уебсайт е да предоставите на посетителите бърз и удобен начин да влязат в контакт с вас. И докато простото посочване на вашия имейл адрес на страница за контакти ще свърши работата, опитът няма да бъде много безпроблемен. Да не говорим, че имейл адресът, който публикувате, ще бъде намерен от ботове и ще попаднете в безброй пощенски списъци за СПАМ.

По-добро решение е да интегрирате контакт форма във вашия уебсайт. Формата за контакт има две основни предимства пред предоставянето на вашия имейл адрес на вашите посетители. От една страна, попълването на контакт форма е по-бързо и удобно от отварянето на пощенска програма и създаването на съобщение там. От друга страна, никога не споделяте публично имейл адреса си, по този начин защитавате собствената си поверителност. В тази статия ще Ви покажем как можете да създадете проста форма за контакт, използвайки PHPMailer.
 

Има ли разлика между PHPMailer и PHP mail() функцията?

Ако преди това сте проучили как да свържете имейла си с контакт формата в PHP, може да сте попаднали на термините PHP mail () функция и PHPMailer. Макар да звучат удивително сходно, тези термини всъщност са две отделни технологии.

PHP mail() функцията е част от стандартната PHP инсталация и е налична за всички по подразбиране. Въпреки че е много проста функция, тя все още може да се използва за създаване на PHP скриптове за изпращане на имейли. Като такава, функцията PHP mail () работи най-добре, когато трябва да изпратите много основни имейл съобщения. Можете да погледнете нашата статия за това как да създадете контакт форма с PHP mail() функцията.

PHPMailer, от друга страна, е безплатен пакет от трета страна за създаване на сложни PHP скриптове за имейл. PHPMailer трябва да бъде изтеглен отделно и интегриран във вашия уебсайт. Той поддържа разширени функции, които не се срещат в стандартната PHP mail () функция, като изпращане на прикачени файлове и създаване на богато форматирани имейл съобщения благодарение на вградената поддръжка за HTML и CSS.

В тази статия ще се съсредоточим върху PHPMailer като технология, която ще задвижва безплатния ни скрипт за нашата контакт форма. По-конкретно, ще използваме най-новата версия на PHPMailer, която към момента на писане е PHPMailer версия 6.1.8.
 

Какви са изскванията за да може PHPMailer да изпраща писма?

Пожелаваме на всички наши клиенти да имат успешни уебсайтове, независимо от хостинг плана, който използват. В резултат на това създаването на контакт форма с помощта на PHPMailer е възможно на всички наши хостинг планове, включително нашия безплатен хостинг план. Единственото изискване е да имате имейл акаунт, създаден чрез секцията за имейл акаунти в контролния панел. Този имейл акаунт ще действа като изпращач на съобщенията, създадени чрез нашата примерна контакт форма.

За да създадете имейл акаунт, трябва да хоствате напълно квалифицирано име на домейн. Можете да изберете да закупите домейн или да регистрирате .bg.cm домейн чрез Домейн мениджъра в контролния панел. Ако не сте сигурни как да използвате секцията за имейл акаунти на контролния панел, можете да проверите нашата статия за това как да създадете имейл акаунт.
 

Как да създадете контакт форма с PHPMailer?

След като сте зъздали имейл акаунт можете да продължите със създаването на вашата контакт форма. За целта следвайте стъпките по-долу:

  1. Изтеглете PHPMailer от тук както е показано на снимката:
  2. Разархивирайте архива за да имате достъп до файловете в него
  3. Отворете Файловия мениджър
  4. Отворете директорията за вашия домейн
  5. Създайте файла contact.html
  6. Отворете файла и въведете следния код, след което запазете файла:

    <html>
    <head>
    <title>
    Contact Form
    </title>
    </head>
    <body>
    <center>
    <font size=“5″>
    <b>Contact Form</b>
    <br/>
    <br/>
    </font>
    <form method=“POST“ action=“mail-script.php“>
    Subject:
    <input type=“text“ name=“subject“ size=“20″>
    <br/>
    <br/>
    Name:
    <input type=“text“ name=“name“ size=“20″>
    <br/>
    <br/>
    E-mail:
    <input type=“email“ name=“email“ size=“20″>
    <br/>
    <br/>
    Message:
    <br/>
    <textarea rows=“9″ name=“message“ cols=“30″>
    </textarea>
    <br/>
    <br/>
    <input type=“submit“ value=“Send“ name=“submit“>
    </form>
    </center>
    </body>
    </html>

  7. Създайте файла mail-script.php по същия начин
  8. Отворете файла и въведете следния код:

    <?php

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    $myEmail = „your-email-goes-here“;
    $myEmailPassword = „your-email-password-goes-here“;
    $myPersonalEmail = „your-personal-email-goes-here“;

    require ‘./src/Exception.php’;
    require ‘./src/PHPMailer.php’;
    require ‘./src/SMTP.php’;

    if(isset($_POST[‘submit’])) {

    $mail = new PHPMailer(true);

    $mail->SMTPDebug = 0;

    $mail->Host = ‘smtp.mboxhosting.com’;
    $mail->SMTPAuth = true;
    $mail->Username = $myEmail;
    $mail->Password = $myEmailPassword;
    $mail->SMTPSecure = ‘tls’;
    $mail->Port = 587;

    $mail->setFrom($myEmail, ‘Mailer’);
    $mail->addAddress($myPersonalEmail);
    $mail->addReplyTo($_POST[’email’], $_POST[‘name’]);

    $mail->isHTML(true);
    $mail->Subject = $_POST[‘subject’];
    $mail->Body = $_POST[‘message’];

    try {
    $mail->send();
    echo ‘Your message was sent successfully!’;
    } catch (Exception $e) {
    echo „Your message could not be sent! PHPMailer Error: {$mail->ErrorInfo}“;
    }

    } else {
    echo „There is a problem with the contact.html document!“;
    }

    ?>

  9.  В началото на кода ще забележете следните редове:

    $myEmail = „your-email-goes-here“;
    $myEmailPassword = „your-email-password-goes-here“;
    $myPersonalEmail = „your-personal-email-goes-here“;

    Променете кода по следния начин:

    • Заменете your-email-goes-here с имейл акаунта, който сте създали във вашия хостинг акаунта и който искате да използвате за изпращане на имейлите
    • Заменете your-email-password-goes-here с паролата за вашия имейл акаунт. Това е нужно за да може скрипта да се свърже с нашия мейл сървър
    • Заменете your-personal-email-goes-here с имейл адреса където искате да се изпращат съобщенията от контакт формата
  10. Запазете променитеи затворете файла
  11. Създайте нова директория с име src
  12. Отворете src директорията
  13. Кликнете на бутона Качване
  14. От директорията src, в PHPMailer папката, която разархивирахте от архива по-рано, качете всички PHP файлове

След като успешно сте качили файловете трябва да имате напълно функционираща контакт форма.

Как да тествате контакт формата?

След като създадохте контакт формата е време да я тествате за да проверите дали работи. За да направите това следвайте стъпките по-долу:

  1. Отворете HTML формата, който създадохте в браузъра като я извикате директно със следния линк http://your-domain.com/contact.html (не забравайте да замените your-domain.com с вашия домейн)
  2. Попълнете контакт формата и кликнете изпрати
  3. Ако всичко е наред трябва да видите съобщението Your message was sent successfully! в браузъра си
  4. Отворете имейл акаунта, в който сте избрали да изпращате съобщенията от контакт формата и проверете дали сте получили съобщението

Как да конфигурирам PHPMailer да изпраща имейл през SMTP от външен имейл сървър?

За разлика от стандартната функция PHP Mail (), PHPMailer прави изключително лесно изпращането на имейл съобщения чрез външен пощенски сървър през SMTP. Всъщност целият процес на създаване на контакт формата е почти идентичен с този, който преди обсъждахме в тази статия. Единствената основна разлика е, че трябва да се използва модифицирана версия на файла mail-script.php.

Имайте предвид, че за да се свържете с външен сървър се изискват активни SMTP изходящи връзки, които на нашите безплатни планове са деактивирани. Ако използвате някой от нашите платени планове може да се свържете с нашия екип от техническа поддръжка и да поискате да се активират SMTP изходящите връзки.

След като сте активирали изходящите връзки следвайте тези стъпки:

  1. Отворете файла mail-script.php и въведете следния код:

    <?php

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    $myPersonalEmail = „your-personal-email-goes-here“;

    $externalMailHost = „your-external-mail-server-address-goes-here“;
    $externalMailAddress = „your-external-email-address-goes-here“;
    $externalMailSMTPAuth = true;
    $externalMailUsername = „your-username-for-the-external-mail-server-goes-here“;
    $externalMailPassword = „your-password-for-the-external-mail-server-goes-here“;
    $externalMailSMTPSecure = „tls“;
    $externalMailPort = 587;

    require ‘./src/Exception.php’;
    require ‘./src/PHPMailer.php’;
    require ‘./src/SMTP.php’;

    if(isset($_POST[‘submit’])) {

    $mail = new PHPMailer(true);

    $mail->SMTPDebug = 0;
    $mail->isSMTP();

    $mail->Host = $externalMailHost;
    $mail->SMTPAuth = $externalMailSMTPAuth;
    $mail->Username = $externalMailUsername;
    $mail->Password = $externalMailPassword;
    $mail->SMTPSecure = $externalMailSMTPSecure;
    $mail->Port = $externalMailPort;

    $mail->setFrom($externalMailAddress, ‘Mailer’);
    $mail->addAddress($myPersonalEmail);
    $mail->addReplyTo($_POST[’email’], $_POST[‘name’]);

    $mail->isHTML(true);
    $mail->Subject = $_POST[‘subject’];
    $mail->Body = $_POST[‘message’];

    try {
    $mail->send();
    echo ‘Your message was sent successfully!’;
    } catch (Exception $e) {
    echo „Your message could not be sent! PHPMailer Error: {$mail->ErrorInfo}“;
    }

    } else {
    echo „There is a problem with the contact.html document!“;
    }

    ?>

  2. Направете следните промени на следната част от файла:

    $myPersonalEmail = „your-personal-email-goes-here“;

    $externalMailHost = „your-external-mail-server-address-goes-here“;
    $externalMailAddress = „your-external-email-address-goes-here“;
    $externalMailSMTPAuth = true;
    $externalMailUsername = „your-username-for-the-external-mail-server-goes-here“;
    $externalMailPassword = „your-password-for-the-external-mail-server-goes-here“;
    $externalMailSMTPSecure = „tls“;
    $externalMailPort = 587;

    • your-personal-email-goes-here – заменете този стринг с имейла където искате да се получават писмата
    • your-external-mail-server-address-goes-here – заменете това с SMTP адреса на мейл сървъра, който използвате
    • your-external-email-address-goes-here – заменете това с имейл акаунта, който ще изпраща имейлите
    • $externalMailSMTPAuth = true – указва дали се изисква удостоверяване за изпращане на съобщения. Променете този ред само ако сте получили указания от вашия имейл доставчик
    • your-username-for-the-external-mail-server-goes-here – потребителското име, с което се свързвате с вашия мейл сървър (обикновенно това е имейл адреса)
    • your-password-for-the-external-mail-server-goes-here – паролата, която ползвате за мейл сървъра
    • $externalMailSMTPSecure = „tls“ – показва вида на защитата, която ще се използва. Променете тази стойност само ако сте получили указания от вашия имейл доставчик
    • $externalMailPort = 587 – портът по подразбиране за изпращане на съобщения. Променете тази стойност само ако сте получили указания от вашия имейл доставчик

Това е, готови сте с конфигурирането на контакт формата.
 

Заключение

В сравнение със стандартната функция на PHP Mail (), PHPMailer предоставя много допълнителна функционалност, без да се жертва лекотата на използване. Ако възнамерявате да надграждате контакт формата си и да добавите допълнителни функции, като например да позволите на посетителите на вашия сайт да ви изпращат прикачени файлове, PHPMailer определено е вашия избор. И накрая, но със сигурност не на последно място, възможността за използване на външен пощенски сървър с вашата контакт форма осигурява ниво на свобода, което е много трудно да се постигне с функцията PHP Mail ().

Готов ли си да създадеш своя сайт?

Pin It on Pinterest

Share This