Compare commits
3 Commits
e67ea16299
...
with-phpma
| Author | SHA1 | Date | |
|---|---|---|---|
| dc64008c44 | |||
| 3f995330ee | |||
|
|
91178ad3d7 |
40
PHPMailer/Exception.php
Normal file
40
PHPMailer/Exception.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHPMailer Exception class.
|
||||||
|
* PHP Version 5.5.
|
||||||
|
*
|
||||||
|
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||||
|
*
|
||||||
|
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||||
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
|
* @author Brent R. Matzelle (original founder)
|
||||||
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
|
* @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
|
||||||
|
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace PHPMailer\PHPMailer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHPMailer exception handler.
|
||||||
|
*
|
||||||
|
* @author Marcus Bointon <phpmailer@synchromedia.co.uk>
|
||||||
|
*/
|
||||||
|
class Exception extends \Exception
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Prettify error message output.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function errorMessage()
|
||||||
|
{
|
||||||
|
return '<strong>' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "</strong><br />\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
5248
PHPMailer/PHPMailer.php
Normal file
5248
PHPMailer/PHPMailer.php
Normal file
File diff suppressed because it is too large
Load Diff
1499
PHPMailer/SMTP.php
Normal file
1499
PHPMailer/SMTP.php
Normal file
File diff suppressed because it is too large
Load Diff
34
README.md
34
README.md
@@ -2,35 +2,7 @@
|
|||||||
|
|
||||||
### **С точки зрения веб-разработки:**
|
### **С точки зрения веб-разработки:**
|
||||||
* верстаем на чистом HTML/CSS с использованием flex и grid (без подключение библиотек типа bootstrap и т.п.)
|
* верстаем на чистом HTML/CSS с использованием flex и grid (без подключение библиотек типа bootstrap и т.п.)
|
||||||
* соблюдаем Scope-ориентированный подход:
|
* при именовании блоков используем методологию **БЭМ в стиле "Two Dashes"**:
|
||||||
- каждую секцию/экран именуем **уникальным** классом-родителем, от которого строим CSS-селектор для дочерних элементов, что ограничивает область ваших стилей только внутри секции/экрана, не влияя на другие части сайта.
|
|
||||||
|
|
||||||
- пример: <br>
|
|
||||||
|
|
||||||
HTML:
|
|
||||||
```
|
|
||||||
<section class="my-namespace">
|
|
||||||
<h1>Новый заголовок</h1>
|
|
||||||
<button class="my-button">Кнопка</button>
|
|
||||||
</section>
|
|
||||||
```
|
|
||||||
|
|
||||||
CSS:
|
|
||||||
|
|
||||||
```
|
|
||||||
.my-namespace h1 {
|
|
||||||
font-size: 24px;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.my-namespace .my-button {
|
|
||||||
background-color: #007BFF;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
* чтобы дополнительно структурировать CSS при именовании блоков используем методологию **БЭМ в стиле "Two Dashes"**:
|
|
||||||
`block-name__elem-name--mod-name--mod-val`
|
`block-name__elem-name--mod-name--mod-val`
|
||||||
+ имена записываются латиницей в нижнем регистре
|
+ имена записываются латиницей в нижнем регистре
|
||||||
+ для разделения слов в именах БЭМ-сущностей используется дефис (-)
|
+ для разделения слов в именах БЭМ-сущностей используется дефис (-)
|
||||||
@@ -39,10 +11,8 @@
|
|||||||
+ значение модификатора отделяется от его имени двумя дефисами (--)
|
+ значение модификатора отделяется от его имени двумя дефисами (--)
|
||||||
* из конечного HTML-файла убрать все комментарии, если такие имеются
|
* из конечного HTML-файла убрать все комментарии, если такие имеются
|
||||||
* все медиазапросы пишутся в отдельных файлах (которые мы подготовили) для того чтобы оптимизировать скорость загрузки; если используется препроцессор, то не нужно в классе каждого блока использовать импорты медиа запросов, а наоборот выносим пример можно посмотреть на ["видео"](https://www.youtube.com/watch?v=9uaENbRyVT4)
|
* все медиазапросы пишутся в отдельных файлах (которые мы подготовили) для того чтобы оптимизировать скорость загрузки; если используется препроцессор, то не нужно в классе каждого блока использовать импорты медиа запросов, а наоборот выносим пример можно посмотреть на ["видео"](https://www.youtube.com/watch?v=9uaENbRyVT4)
|
||||||
* **частая ошибка:** верстальщик берет изображения/видео из макета и не задает им адаптивную ширину/высоту, и на моменте сдачи верстки не заметно косяков, а вот когда мы переходим к натяжке и медиаматериалы начинают выводиться в шаблон динамически и уже разных форматов (ШИРИНАxВЫСОТА), тогда верстка начинает плыть. Чтоб такое избежать проверяйте на как себя ведет элемент при замене слишком большой/маленькой картинки.
|
|
||||||
* **ВАЖНО:** если верстка делается для многостраничного сайта (особенно на CMS), то для всех страниц прописывать уникальный класс в \<body\>, от которого строить все CSS-правила на этой странице + для кажой станицы использовать свои отдельные CSS-файлы
|
* **ВАЖНО:** если верстка делается для многостраничного сайта (особенно на CMS), то для всех страниц прописывать уникальный класс в \<body\>, от которого строить все CSS-правила на этой странице + для кажой станицы использовать свои отдельные CSS-файлы
|
||||||
* подключаем вначале normalize.min.css и reset.min.css, чтобы сбросить глобальные стили и устранить влияние наследуемых правил.
|
|
||||||
* шрифты и глобальные переменные выносим в отдельный файл (у нас это *gp-style-core.css*)
|
|
||||||
|
|
||||||
### **С точки зрения SEO:**
|
### **С точки зрения SEO:**
|
||||||
* все теги использовать строго по назначению! Текстовые (strong, b, i, em, h1-h6… p) используем только в текстовых блоках и заголовках. Для дизайна используем div и span. Например не нужно втыкать в подвал, шапку или формы захвата h4 или закрывать просто крупный текст, который не является заголовком в h2.
|
* все теги использовать строго по назначению! Текстовые (strong, b, i, em, h1-h6… p) используем только в текстовых блоках и заголовках. Для дизайна используем div и span. Например не нужно втыкать в подвал, шапку или формы захвата h4 или закрывать просто крупный текст, который не является заголовком в h2.
|
||||||
|
|||||||
2
assets/css/normalize.min.css
vendored
2
assets/css/normalize.min.css
vendored
@@ -1,2 +0,0 @@
|
|||||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
|
|
||||||
/*# sourceMappingURL=normalize.min.css.map */
|
|
||||||
1
assets/css/reset.min.css
vendored
1
assets/css/reset.min.css
vendored
@@ -1 +0,0 @@
|
|||||||
*{padding:0;margin:0;border:none}*,::after,::before{box-sizing:border-box}a,a:hover,a:link,a:visited{text-decoration:none}aside,footer,header,legend,main,nav,section{display:block}h1,h2,h3,h4,h5,h6,p{font-size:inherit;font-weight:inherit}ul,ul li{list-style:none}img{vertical-align:top}img,svg{max-width:100%;height:auto}address{font-style:normal}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;background-color:transparent}input::-ms-clear{display:none}button,input[type=submit]{display:inline-block;box-shadow:none;background:0 0;cursor:pointer}button:active,button:focus,input:active,input:focus{outline:0}button::-moz-focus-inner{padding:0;border:0}label{cursor:pointer}
|
|
||||||
@@ -8,9 +8,6 @@
|
|||||||
<meta name="description" content="SEO Description">
|
<meta name="description" content="SEO Description">
|
||||||
<link rel="shortcut icon" href="/assets/img/favicon.ico?v=1.0">
|
<link rel="shortcut icon" href="/assets/img/favicon.ico?v=1.0">
|
||||||
|
|
||||||
<!-- Сбрасываем глобальные стили -->
|
|
||||||
<link rel="stylesheet" href="/assets/css/normalize.min.css">
|
|
||||||
<link rel="stylesheet" href="/assets/css/reset.min.css">
|
|
||||||
<!-- Базовые стили -->
|
<!-- Базовые стили -->
|
||||||
<link rel="stylesheet" href="/assets/css/gp-style-core.css?v=1.0">
|
<link rel="stylesheet" href="/assets/css/gp-style-core.css?v=1.0">
|
||||||
<link rel="stylesheet" href="/assets/css/gp-style-desktop.css?v=1.0">
|
<link rel="stylesheet" href="/assets/css/gp-style-desktop.css?v=1.0">
|
||||||
|
|||||||
29
send-SMTP.php
Normal file
29
send-SMTP.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
use PHPMailer\PHPMailer;
|
||||||
|
use PHPMailer\Exception;
|
||||||
|
|
||||||
|
require 'PHPMailer/Exception.php';
|
||||||
|
require 'PHPMailer/PHPMailer.php';
|
||||||
|
require 'PHPMailer/SMTP.php';
|
||||||
|
|
||||||
|
$mail = new PHPMailer;
|
||||||
|
$mail->isSMTP();
|
||||||
|
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
|
||||||
|
$mail->Host = "smtp.gmail.com"; // use $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6
|
||||||
|
$mail->Port = 587; // TLS only
|
||||||
|
$mail->SMTPSecure = 'tls'; // ssl is depracated
|
||||||
|
$mail->SMTPAuth = true;
|
||||||
|
$mail->Username = $smtpUsername;
|
||||||
|
$mail->Password = $smtpPassword;
|
||||||
|
$mail->setFrom($emailFrom, $emailFromName);
|
||||||
|
$mail->addAddress($emailTo, $emailToName);
|
||||||
|
$mail->Subject = 'PHPMailer GMail SMTP test';
|
||||||
|
$mail->msgHTML("test body"); //$mail->msgHTML(file_get_contents('contents.html'), __DIR__); //Read an HTML message body from an external file, convert referenced images to embedded,
|
||||||
|
$mail->AltBody = 'HTML messaging not supported';
|
||||||
|
// $mail->addAttachment('images/phpmailer_mini.png'); //Attach an image file
|
||||||
|
|
||||||
|
if(!$mail->send()){
|
||||||
|
echo "Mailer Error: " . $mail->ErrorInfo;
|
||||||
|
}else{
|
||||||
|
echo "Message sent!";
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user